Puntos: 60
El mercado de valores ha demostrado constantemente ser un buen lugar para invertir y ahorrar para el futuro. Hay muchas razones convincentes para invertir en acciones. Puede ayudar a combatir la inflación, crear riqueza y también proporciona algunos beneficios fiscales. Los buenos rendimientos constantes de las inversiones durante un largo período de tiempo también pueden crecer mucho más de lo que parece posible. Además, gracias al poder del interés compuesto, cuanto antes se empieza a invertir, mayor es el corpus que se puede tener para la jubilación. En general, invertir en acciones puede ayudar a cumplir las aspiraciones financieras de la vida.
Es importante mantener una cartera diversificada al invertir en acciones para maximizar las ganancias bajo cualquier condición de mercado. Tener una cartera diversificada tiende a generar mayores rendimientos y enfrentar un menor riesgo al moderar las pérdidas potenciales cuando el mercado está a la baja. A menudo es fácil perderse en un mar de métricas financieras para analizar mientras se determina el valor de una acción, y hacer lo mismo para una multitud de acciones para identificar las opciones correctas para un individuo puede ser una tarea tediosa. Al hacer un análisis de conglomerados, se pueden identificar las acciones que exhiben características similares y las que exhiben una correlación mínima. Esto ayudará a los inversores a analizar mejor las acciones en diferentes segmentos del mercado y ayudará a protegerse contra los riesgos que podrían hacer que la cartera sea vulnerable a pérdidas.
Trade&Ahead es una firma de consultoría financiera que brinda a sus clientes estrategias de inversión personalizadas. Lo contrataron como científico de datos y le proporcionaron datos que incluyen el precio de las acciones y algunos indicadores financieros para algunas empresas que cotizan en la Bolsa de Valores de Nueva York. Le han asignado las tareas de analizar los datos, agrupar las acciones en función de los atributos proporcionados y compartir información sobre las características de cada grupo.
# this will help in making the Python code more structured automatically (good coding practice)
#%load_ext nb_black
# Libraries to help with reading and manipulating data
import numpy as np
import pandas as pd
# Libraries to help with data visualization
import matplotlib.pyplot as plt
import seaborn as sns
# to scale the data using z-score
from sklearn.preprocessing import StandardScaler
# to compute distances
from scipy.spatial.distance import cdist
from scipy.spatial.distance import pdist
# to perform k-means clustering and compute silhouette scores
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# to visualize the elbow curve and silhouette scores
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer
import warnings
warnings.filterwarnings("ignore")
# Removes the limit for the number of displayed columns
pd.set_option("display.max_columns", None)
# Sets the limit for the number of displayed rows
pd.set_option("display.max_rows", 200)
# to perform hierarchical clustering, compute cophenetic correlation, and create dendrograms
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram, linkage, cophenet
# to perform PCA
from sklearn.decomposition import PCA
#Para evitar avisos
# To suppress the warnings
import warnings
warnings.filterwarnings("ignore")
#Elimina el límite para la cantidad de columnas mostradas.
# Removes the limit for the number of displayed columns
pd.set_option("display.max_columns", None)
#Establece el límite para la cantidad de filas mostradas en 100.
# Sets the limit for the number of displayed rows
pd.set_option("display.max_rows", 100)
# ajuste a 3 decimal points
pd.set_option("display.float_format", lambda x: "%.3f" % x)
# This will help in making the Python code more structured automatically (good coding practice)
#%load_ext nb_black
# Cargar el conjunto de datos
# loading the dataset
df= pd.read_csv("stock_data.csv")
#Copia de la data
data=df.copy()
# Revisión de la forma de los datos
print("-El conjunto de datos contiene", data.shape[0], 'FILAS y', data.shape[1], "COLUMNAS.")
data.shape
-El conjunto de datos contiene 340 FILAS y 15 COLUMNAS.
(340, 15)
#Revisión de el data set
# viewing a random sample of the dataset
data.sample(n=10, random_state=1)
| Ticker Symbol | Security | GICS Sector | GICS Sub Industry | Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 102 | DVN | Devon Energy Corp. | Energy | Oil & Gas Exploration & Production | 32.000 | -15.478 | 2.924 | 205 | 70 | 830000000 | -14454000000 | -35.550 | 406582278.500 | 93.089 | 1.786 |
| 125 | FB | Information Technology | Internet Software & Services | 104.660 | 16.224 | 1.321 | 8 | 958 | 592000000 | 3669000000 | 1.310 | 2800763359.000 | 79.893 | 5.884 | |
| 11 | AIV | Apartment Investment & Mgmt | Real Estate | REITs | 40.030 | 7.579 | 1.163 | 15 | 47 | 21818000 | 248710000 | 1.520 | 163625000.000 | 26.336 | -1.269 |
| 248 | PG | Procter & Gamble | Consumer Staples | Personal Products | 79.410 | 10.661 | 0.806 | 17 | 129 | 160383000 | 636056000 | 3.280 | 491391569.000 | 24.070 | -2.257 |
| 238 | OXY | Occidental Petroleum | Energy | Oil & Gas Exploration & Production | 67.610 | 0.865 | 1.590 | 32 | 64 | -588000000 | -7829000000 | -10.230 | 765298142.700 | 93.089 | 3.345 |
| 336 | YUM | Yum! Brands Inc | Consumer Discretionary | Restaurants | 52.516 | -8.699 | 1.479 | 142 | 27 | 159000000 | 1293000000 | 2.970 | 435353535.400 | 17.682 | -3.838 |
| 112 | EQT | EQT Corporation | Energy | Oil & Gas Exploration & Production | 52.130 | -21.254 | 2.365 | 2 | 201 | 523803000 | 85171000 | 0.560 | 152091071.400 | 93.089 | 9.568 |
| 147 | HAL | Halliburton Co. | Energy | Oil & Gas Equipment & Services | 34.040 | -5.102 | 1.966 | 4 | 189 | 7786000000 | -671000000 | -0.790 | 849367088.600 | 93.089 | 17.346 |
| 89 | DFS | Discover Financial Services | Financials | Consumer Finance | 53.620 | 3.654 | 1.160 | 20 | 99 | 2288000000 | 2297000000 | 5.140 | 446887159.500 | 10.432 | -0.376 |
| 173 | IVZ | Invesco Ltd. | Financials | Asset Management & Custody Banks | 33.480 | 7.067 | 1.581 | 12 | 67 | 412000000 | 968100000 | 2.260 | 428362831.900 | 14.814 | 4.219 |
#Revisión de los tipos de datos y valores nulos
# checking datatypes and number of non-null values for each column
data.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 340 entries, 0 to 339 Data columns (total 15 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Ticker Symbol 340 non-null object 1 Security 340 non-null object 2 GICS Sector 340 non-null object 3 GICS Sub Industry 340 non-null object 4 Current Price 340 non-null float64 5 Price Change 340 non-null float64 6 Volatility 340 non-null float64 7 ROE 340 non-null int64 8 Cash Ratio 340 non-null int64 9 Net Cash Flow 340 non-null int64 10 Net Income 340 non-null int64 11 Earnings Per Share 340 non-null float64 12 Estimated Shares Outstanding 340 non-null float64 13 P/E Ratio 340 non-null float64 14 P/B Ratio 340 non-null float64 dtypes: float64(7), int64(4), object(4) memory usage: 40.0+ KB
Las variables presentan tipos de datos esperados
Ticker Symbol,Security GICS Sector, GICS Sub Industry son del tipo objeto lo cual concuerda con lo esperado.
# Let's look at the statistical summary of the data
display(data.describe().T)
display(data.describe(include = 'object').T)
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| Current Price | 340.000 | 80.862 | 98.055 | 4.500 | 38.555 | 59.705 | 92.880 | 1274.950 |
| Price Change | 340.000 | 4.078 | 12.006 | -47.130 | -0.939 | 4.820 | 10.695 | 55.052 |
| Volatility | 340.000 | 1.526 | 0.592 | 0.733 | 1.135 | 1.386 | 1.696 | 4.580 |
| ROE | 340.000 | 39.597 | 96.548 | 1.000 | 9.750 | 15.000 | 27.000 | 917.000 |
| Cash Ratio | 340.000 | 70.024 | 90.421 | 0.000 | 18.000 | 47.000 | 99.000 | 958.000 |
| Net Cash Flow | 340.000 | 55537620.588 | 1946365312.176 | -11208000000.000 | -193906500.000 | 2098000.000 | 169810750.000 | 20764000000.000 |
| Net Income | 340.000 | 1494384602.941 | 3940150279.328 | -23528000000.000 | 352301250.000 | 707336000.000 | 1899000000.000 | 24442000000.000 |
| Earnings Per Share | 340.000 | 2.777 | 6.588 | -61.200 | 1.558 | 2.895 | 4.620 | 50.090 |
| Estimated Shares Outstanding | 340.000 | 577028337.754 | 845849595.418 | 27672156.860 | 158848216.100 | 309675137.800 | 573117457.325 | 6159292035.000 |
| P/E Ratio | 340.000 | 32.613 | 44.349 | 2.935 | 15.045 | 20.820 | 31.765 | 528.039 |
| P/B Ratio | 340.000 | -1.718 | 13.967 | -76.119 | -4.352 | -1.067 | 3.917 | 129.065 |
| count | unique | top | freq | |
|---|---|---|---|---|
| Ticker Symbol | 340 | 340 | AAL | 1 |
| Security | 340 | 340 | American Airlines Group | 1 |
| GICS Sector | 340 | 11 | Industrials | 53 |
| GICS Sub Industry | 340 | 104 | Oil & Gas Exploration & Production | 16 |
#Revisión de valores únicos de ls feactures
# Let's see unique values
cols = data.columns
for col in cols:
print("Unique values in the column '{}' are \n\n".format(col), data[col].unique())
print("-" * 100)
Unique values in the column 'Ticker Symbol' are
['AAL' 'ABBV' 'ABT' 'ADBE' 'ADI' 'ADM' 'ADS' 'AEE' 'AEP' 'AFL' 'AIG' 'AIV'
'AIZ' 'AJG' 'AKAM' 'ALB' 'ALK' 'ALL' 'ALLE' 'ALXN' 'AMAT' 'AME' 'AMG'
'AMGN' 'AMP' 'AMT' 'AMZN' 'AN' 'ANTM' 'AON' 'APA' 'APC' 'APH' 'ARNC'
'ATVI' 'AVB' 'AVGO' 'AWK' 'AXP' 'BA' 'BAC' 'BAX' 'BBT' 'BCR' 'BHI' 'BIIB'
'BK' 'BLL' 'BMY' 'BSX' 'BWA' 'BXP' 'C' 'CAT' 'CB' 'CBG' 'CCI' 'CCL'
'CELG' 'CF' 'CFG' 'CHD' 'CHK' 'CHRW' 'CHTR' 'CI' 'CINF' 'CL' 'CMA' 'CME'
'CMG' 'CMI' 'CMS' 'CNC' 'CNP' 'COF' 'COG' 'COO' 'CSX' 'CTL' 'CTSH' 'CTXS'
'CVS' 'CVX' 'CXO' 'D' 'DAL' 'DD' 'DE' 'DFS' 'DGX' 'DHR' 'DIS' 'DISCA'
'DISCK' 'DLPH' 'DLR' 'DNB' 'DOV' 'DPS' 'DUK' 'DVA' 'DVN' 'EBAY' 'ECL'
'ED' 'EFX' 'EIX' 'EMN' 'EOG' 'EQIX' 'EQR' 'EQT' 'ES' 'ESS' 'ETFC' 'ETN'
'ETR' 'EW' 'EXC' 'EXPD' 'EXPE' 'EXR' 'F' 'FAST' 'FB' 'FBHS' 'FCX' 'FE'
'FIS' 'FISV' 'FLIR' 'FLR' 'FLS' 'FMC' 'FRT' 'FSLR' 'FTR' 'GD' 'GGP'
'GILD' 'GLW' 'GM' 'GPC' 'GRMN' 'GT' 'GWW' 'HAL' 'HAS' 'HBAN' 'HCA' 'HCN'
'HCP' 'HES' 'HIG' 'HOG' 'HON' 'HPE' 'HPQ' 'HRL' 'HSIC' 'HST' 'HSY' 'HUM'
'IBM' 'IDXX' 'IFF' 'INTC' 'IP' 'IPG' 'IRM' 'ISRG' 'ITW' 'IVZ' 'JBHT'
'JEC' 'JNPR' 'JPM' 'KIM' 'KMB' 'KMI' 'KO' 'KSU' 'LEG' 'LEN' 'LH' 'LKQ'
'LLL' 'LLY' 'LMT' 'LNT' 'LUK' 'LUV' 'LVLT' 'LYB' 'MA' 'MAA' 'MAC' 'MAR'
'MAS' 'MAT' 'MCD' 'MCO' 'MDLZ' 'MET' 'MHK' 'MJN' 'MKC' 'MLM' 'MMC' 'MMM'
'MNST' 'MO' 'MOS' 'MPC' 'MRK' 'MRO' 'MTB' 'MTD' 'MUR' 'MYL' 'NAVI' 'NBL'
'NDAQ' 'NEE' 'NEM' 'NFLX' 'NFX' 'NLSN' 'NOV' 'NSC' 'NTRS' 'NUE' 'NWL' 'O'
'OKE' 'OMC' 'ORLY' 'OXY' 'PBCT' 'PBI' 'PCAR' 'PCG' 'PCLN' 'PEG' 'PEP'
'PFE' 'PFG' 'PG' 'PGR' 'PHM' 'PM' 'PNC' 'PNR' 'PNW' 'PPG' 'PPL' 'PRU'
'PSX' 'PWR' 'PX' 'PYPL' 'R' 'RCL' 'REGN' 'RHI' 'ROP' 'RRC' 'RSG' 'SCG'
'SCHW' 'SE' 'SEE' 'SHW' 'SLG' 'SNI' 'SO' 'SPG' 'SPGI' 'SRCL' 'SRE' 'STI'
'STT' 'SWKS' 'SWN' 'SYF' 'SYK' 'T' 'TAP' 'TDC' 'TGNA' 'TMK' 'TMO' 'TRIP'
'TRV' 'TSCO' 'TSN' 'TSO' 'TSS' 'TXN' 'UAA' 'UAL' 'UDR' 'UHS' 'UNH' 'UNM'
'UNP' 'UPS' 'UTX' 'VAR' 'VLO' 'VMC' 'VNO' 'VRSK' 'VRSN' 'VRTX' 'VTR' 'VZ'
'WAT' 'WEC' 'WFC' 'WHR' 'WM' 'WMB' 'WU' 'WY' 'WYN' 'WYNN' 'XEC' 'XEL'
'XL' 'XOM' 'XRAY' 'XRX' 'XYL' 'YHOO' 'YUM' 'ZBH' 'ZION' 'ZTS']
----------------------------------------------------------------------------------------------------
Unique values in the column 'Security' are
['American Airlines Group' 'AbbVie' 'Abbott Laboratories'
'Adobe Systems Inc' 'Analog Devices, Inc.' 'Archer-Daniels-Midland Co'
'Alliance Data Systems' 'Ameren Corp' 'American Electric Power'
'AFLAC Inc' 'American International Group, Inc.'
'Apartment Investment & Mgmt' 'Assurant Inc' 'Arthur J. Gallagher & Co.'
'Akamai Technologies Inc' 'Albemarle Corp' 'Alaska Air Group Inc'
'Allstate Corp' 'Allegion' 'Alexion Pharmaceuticals'
'Applied Materials Inc' 'AMETEK Inc' 'Affiliated Managers Group Inc'
'Amgen Inc' 'Ameriprise Financial' 'American Tower Corp A'
'Amazon.com Inc' 'AutoNation Inc' 'Anthem Inc.' 'Aon plc'
'Apache Corporation' 'Anadarko Petroleum Corp' 'Amphenol Corp'
'Arconic Inc' 'Activision Blizzard' 'AvalonBay Communities, Inc.'
'Broadcom' 'American Water Works Company Inc' 'American Express Co'
'Boeing Company' 'Bank of America Corp' 'Baxter International Inc.'
'BB&T Corporation' 'Bard (C.R.) Inc.' 'Baker Hughes Inc'
'BIOGEN IDEC Inc.' 'The Bank of New York Mellon Corp.' 'Ball Corp'
'Bristol-Myers Squibb' 'Boston Scientific' 'BorgWarner'
'Boston Properties' 'Citigroup Inc.' 'Caterpillar Inc.' 'Chubb Limited'
'CBRE Group' 'Crown Castle International Corp.' 'Carnival Corp.'
'Celgene Corp.' 'CF Industries Holdings Inc' 'Citizens Financial Group'
'Church & Dwight' 'Chesapeake Energy' 'C. H. Robinson Worldwide'
'Charter Communications' 'CIGNA Corp.' 'Cincinnati Financial'
'Colgate-Palmolive' 'Comerica Inc.' 'CME Group Inc.'
'Chipotle Mexican Grill' 'Cummins Inc.' 'CMS Energy'
'Centene Corporation' 'CenterPoint Energy' 'Capital One Financial'
'Cabot Oil & Gas' 'The Cooper Companies' 'CSX Corp.' 'CenturyLink Inc'
'Cognizant Technology Solutions' 'Citrix Systems' 'CVS Health'
'Chevron Corp.' 'Concho Resources' 'Dominion Resources' 'Delta Air Lines'
'Du Pont (E.I.)' 'Deere & Co.' 'Discover Financial Services'
'Quest Diagnostics' 'Danaher Corp.' 'The Walt Disney Company'
'Discovery Communications-A' 'Discovery Communications-C'
'Delphi Automotive' 'Digital Realty Trust' 'Dun & Bradstreet'
'Dover Corp.' 'Dr Pepper Snapple Group' 'Duke Energy' 'DaVita Inc.'
'Devon Energy Corp.' 'eBay Inc.' 'Ecolab Inc.' 'Consolidated Edison'
'Equifax Inc.' "Edison Int'l" 'Eastman Chemical' 'EOG Resources'
'Equinix' 'Equity Residential' 'EQT Corporation' 'Eversource Energy'
'Essex Property Trust, Inc.' 'E*Trade' 'Eaton Corporation'
'Entergy Corp.' 'Edwards Lifesciences' 'Exelon Corp.' "Expeditors Int'l"
'Expedia Inc.' 'Extra Space Storage' 'Ford Motor' 'Fastenal Co'
'Facebook' 'Fortune Brands Home & Security' 'Freeport-McMoran Cp & Gld'
'FirstEnergy Corp' 'Fidelity National Information Services' 'Fiserv Inc'
'FLIR Systems' 'Fluor Corp.' 'Flowserve Corporation' 'FMC Corporation'
'Federal Realty Investment Trust' 'First Solar Inc'
'Frontier Communications' 'General Dynamics'
'General Growth Properties Inc.' 'Gilead Sciences' 'Corning Inc.'
'General Motors' 'Genuine Parts' 'Garmin Ltd.' 'Goodyear Tire & Rubber'
'Grainger (W.W.) Inc.' 'Halliburton Co.' 'Hasbro Inc.'
'Huntington Bancshares' 'HCA Holdings' 'Welltower Inc.' 'HCP Inc.'
'Hess Corporation' 'Hartford Financial Svc.Gp.' 'Harley-Davidson'
"Honeywell Int'l Inc." 'Hewlett Packard Enterprise' 'HP Inc.'
'Hormel Foods Corp.' 'Henry Schein' 'Host Hotels & Resorts'
'The Hershey Company' 'Humana Inc.' 'International Business Machines'
'IDEXX Laboratories' 'Intl Flavors & Fragrances' 'Intel Corp.'
'International Paper' 'Interpublic Group' 'Iron Mountain Incorporated'
'Intuitive Surgical Inc.' 'Illinois Tool Works' 'Invesco Ltd.'
'J. B. Hunt Transport Services' 'Jacobs Engineering Group'
'Juniper Networks' 'JPMorgan Chase & Co.' 'Kimco Realty' 'Kimberly-Clark'
'Kinder Morgan' 'Coca Cola Company' 'Kansas City Southern'
'Leggett & Platt' 'Lennar Corp.' 'Laboratory Corp. of America Holding'
'LKQ Corporation' 'L-3 Communications Holdings' 'Lilly (Eli) & Co.'
'Lockheed Martin Corp.' 'Alliant Energy Corp' 'Leucadia National Corp.'
'Southwest Airlines' 'Level 3 Communications' 'LyondellBasell'
'Mastercard Inc.' 'Mid-America Apartments' 'Macerich' "Marriott Int'l."
'Masco Corp.' 'Mattel Inc.' "McDonald's Corp." "Moody's Corp"
'Mondelez International' 'MetLife Inc.' 'Mohawk Industries'
'Mead Johnson' 'McCormick & Co.' 'Martin Marietta Materials'
'Marsh & McLennan' '3M Company' 'Monster Beverage' 'Altria Group Inc'
'The Mosaic Company' 'Marathon Petroleum' 'Merck & Co.'
'Marathon Oil Corp.' 'M&T Bank Corp.' 'Mettler Toledo' 'Murphy Oil'
'Mylan N.V.' 'Navient' 'Noble Energy Inc' 'NASDAQ OMX Group'
'NextEra Energy' 'Newmont Mining Corp. (Hldg. Co.)' 'Netflix Inc.'
'Newfield Exploration Co' 'Nielsen Holdings'
'National Oilwell Varco Inc.' 'Norfolk Southern Corp.'
'Northern Trust Corp.' 'Nucor Corp.' 'Newell Brands'
'Realty Income Corporation' 'ONEOK' 'Omnicom Group' "O'Reilly Automotive"
'Occidental Petroleum' "People's United Financial" 'Pitney-Bowes'
'PACCAR Inc.' 'PG&E Corp.' 'Priceline.com Inc'
'Public Serv. Enterprise Inc.' 'PepsiCo Inc.' 'Pfizer Inc.'
'Principal Financial Group' 'Procter & Gamble' 'Progressive Corp.'
'Pulte Homes Inc.' 'Philip Morris International' 'PNC Financial Services'
'Pentair Ltd.' 'Pinnacle West Capital' 'PPG Industries' 'PPL Corp.'
'Prudential Financial' 'Phillips 66' 'Quanta Services Inc.'
'Praxair Inc.' 'PayPal' 'Ryder System' 'Royal Caribbean Cruises Ltd'
'Regeneron' 'Robert Half International' 'Roper Industries'
'Range Resources Corp.' 'Republic Services Inc' 'SCANA Corp'
'Charles Schwab Corporation' 'Spectra Energy Corp.' 'Sealed Air'
'Sherwin-Williams' 'SL Green Realty' 'Scripps Networks Interactive Inc.'
'Southern Co.' 'Simon Property Group Inc' 'S&P Global, Inc.'
'Stericycle Inc' 'Sempra Energy' 'SunTrust Banks' 'State Street Corp.'
'Skyworks Solutions' 'Southwestern Energy' 'Synchrony Financial'
'Stryker Corp.' 'AT&T Inc' 'Molson Coors Brewing Company'
'Teradata Corp.' 'Tegna, Inc.' 'Torchmark Corp.'
'Thermo Fisher Scientific' 'TripAdvisor' 'The Travelers Companies Inc.'
'Tractor Supply Company' 'Tyson Foods' 'Tesoro Petroleum Co.'
'Total System Services' 'Texas Instruments' 'Under Armour'
'United Continental Holdings' 'UDR Inc' 'Universal Health Services, Inc.'
'United Health Group Inc.' 'Unum Group' 'Union Pacific'
'United Parcel Service' 'United Technologies' 'Varian Medical Systems'
'Valero Energy' 'Vulcan Materials' 'Vornado Realty Trust'
'Verisk Analytics' 'Verisign Inc.' 'Vertex Pharmaceuticals Inc'
'Ventas Inc' 'Verizon Communications' 'Waters Corporation'
'Wec Energy Group Inc' 'Wells Fargo' 'Whirlpool Corp.'
'Waste Management Inc.' 'Williams Cos.' 'Western Union Co'
'Weyerhaeuser Corp.' 'Wyndham Worldwide' 'Wynn Resorts Ltd'
'Cimarex Energy' 'Xcel Energy Inc' 'XL Capital' 'Exxon Mobil Corp.'
'Dentsply Sirona' 'Xerox Corp.' 'Xylem Inc.' 'Yahoo Inc.'
'Yum! Brands Inc' 'Zimmer Biomet Holdings' 'Zions Bancorp' 'Zoetis']
----------------------------------------------------------------------------------------------------
Unique values in the column 'GICS Sector' are
['Industrials' 'Health Care' 'Information Technology' 'Consumer Staples'
'Utilities' 'Financials' 'Real Estate' 'Materials'
'Consumer Discretionary' 'Energy' 'Telecommunications Services']
----------------------------------------------------------------------------------------------------
Unique values in the column 'GICS Sub Industry' are
['Airlines' 'Pharmaceuticals' 'Health Care Equipment'
'Application Software' 'Semiconductors' 'Agricultural Products'
'Data Processing & Outsourced Services' 'MultiUtilities'
'Electric Utilities' 'Life & Health Insurance'
'Property & Casualty Insurance' 'REITs' 'Multi-line Insurance'
'Insurance Brokers' 'Internet Software & Services' 'Specialty Chemicals'
'Building Products' 'Biotechnology' 'Semiconductor Equipment'
'Electrical Components & Equipment' 'Asset Management & Custody Banks'
'Specialized REITs' 'Internet & Direct Marketing Retail'
'Specialty Stores' 'Managed Health Care'
'Oil & Gas Exploration & Production' 'Electronic Components'
'Aerospace & Defense' 'Home Entertainment Software' 'Residential REITs'
'Water Utilities' 'Consumer Finance' 'Banks'
'Oil & Gas Equipment & Services' 'Metal & Glass Containers'
'Health Care Distributors' 'Auto Parts & Equipment'
'Construction & Farm Machinery & Heavy Trucks' 'Real Estate Services'
'Hotels, Resorts & Cruise Lines' 'Fertilizers & Agricultural Chemicals'
'Regional Banks' 'Household Products' 'Integrated Oil & Gas'
'Air Freight & Logistics' 'Cable & Satellite'
'Financial Exchanges & Data' 'Restaurants' 'Industrial Machinery'
'Health Care Supplies' 'Railroads'
'Integrated Telecommunications Services' 'IT Consulting & Other Services'
'Drug Retail' 'Diversified Chemicals' 'Health Care Facilities'
'Industrial Conglomerates' 'Broadcasting & Cable TV'
'Research & Consulting Services' 'Soft Drinks'
'Investment Banking & Brokerage' 'Automobile Manufacturers' 'Copper'
'Electronic Equipment & Instruments' 'Diversified Commercial Services'
'Retail REITs' 'Consumer Electronics' 'Tires & Rubber'
'Industrial Materials' 'Leisure Products' 'Motorcycle Manufacturers'
'Technology Hardware, Storage & Peripherals' 'Computer Hardware'
'Packaged Foods & Meats' 'Paper Packaging' 'Advertising' 'Trucking'
'Networking Equipment' 'Oil & Gas Refining & Marketing & Transportation'
'Homebuilding' 'Distributors' 'Multi-Sector Holdings'
'Alternative Carriers' 'Diversified Financial Services'
'Home Furnishings' 'Construction Materials' 'Tobacco'
'Life Sciences Tools & Services' 'Gold' 'Steel'
'Housewares & Specialties' 'Thrifts & Mortgage Finance'
'Technology, Hardware, Software and Supplies' 'Personal Products'
'Industrial Gases' 'Human Resource & Employment Services' 'Office REITs'
'Brewers' 'Publishing' 'Specialty Retail'
'Apparel, Accessories & Luxury Goods' 'Household Appliances'
'Environmental Services' 'Casinos & Gaming']
----------------------------------------------------------------------------------------------------
Unique values in the column 'Current Price' are
[ 42.349998 59.240002 44.91 93.940002 55.32
36.68 276.570007 43.23 58.27 59.900002
61.970001 40.029999 80.540001 40.939999 52.630001
56.009998 80.510002 62.09 65.919998 190.75
18.67 53.59 159.759995 162.330002 106.419998
96.949997 675.890015 59.66 139.440002 92.209999
44.470001 48.580002 52.23 7.3988066 38.709999
184.130005 145.149994 59.75 69.550003 144.589996
16.83 38.150002 37.810001 189.440002 46.150002
306.350006 41.220001 72.730003 68.790001 18.440001
127.540001 51.75 67.959999 116.849998 34.580002
86.449997 54.48 119.760002 40.810001 26.190001
42.4399985 4.5 62.02 183.100006 146.330002
59.169998 66.620003 41.830002 90.599998 479.850006
88.010002 36.080002 65.809998 18.360001 72.18
17.690001 134.199997 25.950001 25.16 60.02
75.650002 97.769997 89.959999 92.860001 67.639999
50.689999 66.599998 76.269997 53.619999 71.139999
70.41698484 105.080002 26.68 25.219999 85.730003
75.620003 103.93 61.310001 93.199997 71.389999
69.709999 32. 27.48 114.379997 64.269997
111.370003 59.209999 67.510002 70.790001 302.399994
81.589996 52.130001 51.07 239.410004 29.639999
52.040001 68.360001 78.980003 27.77 45.099998
124.300003 88.209999 14.09 40.82 104.660004
55.5 6.77 31.73 60.599998 91.459999
28.07 47.220001 42.080002 39.130001 146.100006
65.989998 4.67 137.360001 27.209999 101.190002
18.280001 34.009998 85.889999 37.169998 32.669998
202.589996 34.040001 67.360001 11.06 67.629997
68.029999 34.82695902 48.48 43.459999 45.389999
103.57 15.2 11.84 39.540001 158.190002
15.34 89.269997 178.509995 137.619995 72.919998
119.639999 34.450001 37.700001 23.280001 27.01
546.159973 92.68 33.48 73.360001 41.950001
27.6 66.029999 26.459999 127.300003 14.92
42.959999 74.669998 42.02 48.91 123.639999
29.629999 119.510002 84.260002 217.149994 31.2250005
17.389999 43.060001 54.360001 86.900002 97.360001
90.809998 80.690002 67.040001 28.299999 27.17
118.139999 100.339996 44.84 48.209999 189.389999
78.949997 85.559998 136.580002 55.450001 150.639999
49.65333167 58.209999 27.59 51.84 52.82
12.59 121.18 339.130005 22.450001 54.07
11.45 32.93 58.169998 103.889999 17.99
32.560001 46.599998 33.490002 84.589996 72.089996
40.299999 44.080002 51.630001 24.66 75.660004
253.419998 67.610001 16.15 20.65 47.400002
53.189999 1274.949951 38.689999 99.919998 32.279999
44.98 79.410004 31.799999 17.82 87.910004
95.309998 49.529999 64.480003 98.82 34.130001
81.410004 81.800003 20.25 102.400002 36.200001
56.830002 101.209999 542.869995 47.139999 189.789993
24.610001 43.990002 60.490002 23.940001 44.599998
259.600006 112.980003 55.209999 46.790001 194.440002
98.580002 120.599998 94.010002 42.84 66.360001
76.830002 7.11 30.41 92.940002 34.41
93.919998 26.42 25.52 57.16 141.850006
85.25 112.860001 85.5 53.330002 105.370003
49.799999 54.810001 80.610001 57.299999 37.57
119.489998 117.639999 33.290001 78.199997 96.230003
96.07 80.800003 70.709999 94.970001 99.959999
76.879997 87.360001 125.830002 56.43 46.220001
134.580002 51.310001 146.869995 53.369999 25.700001
17.91 29.98 72.650002 69.190002 89.379997
35.91 39.18 77.949997 60.849998 10.63
36.5 33.259998 52.51617541 102.589996 27.299999
47.919998 ]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Price Change' are
[ 9.99999481e+00 8.33943306e+00 1.13011208e+01 1.39771952e+01
-1.82785810e+00 -1.20172682e+01 6.18928557e+00 2.17442444e+00
2.37175342e+00 3.02718100e+00 8.35810821e+00 7.57860810e+00
1.89777325e+00 -6.06943448e-01 -2.37909028e+01 2.64619479e+01
2.06643644e+00 6.59227468e+00 1.37532301e+01 2.23383802e+01
2.68342391e+01 2.21247377e+00 -6.61133544e+00 1.71634778e+01
-2.42068591e+00 1.02330873e+01 3.22681047e+01 2.35031562e+00
-6.20052749e-01 3.91030097e+00 1.13978037e+01 -2.08020835e+01
2.69366688e+00 1.64778443e+00 2.33195293e+01 4.85763024e+00
1.79026828e+01 8.59687386e+00 -6.21629012e+00 1.01050779e+01
8.44072165e+00 1.67023651e+01 5.94004500e+00 1.54918196e+00
-1.23123672e+01 4.91798229e+00 5.42200283e+00 1.65358164e+01
1.60816796e+01 1.17575818e+01 3.47056255e+00 7.20349662e+00
4.71469465e+00 3.55020891e+00 1.31938338e+01 8.19775683e+00
9.56906820e+00 8.93821671e+00 8.44879290e+00 -9.25061131e+00
1.02736884e+01 1.04761548e+00 -3.81017882e+01 -9.00822130e+00
3.59850674e+00 8.68241465e+00 9.77735771e+00 4.78137921e+00
1.90012916e+00 -2.40224491e+00 -3.31312678e+01 -1.88847908e+01
1.94971184e+00 2.17125911e+01 1.43646961e+00 -6.19574582e-01
-2.00993595e+01 -9.67221466e+00 -4.34942146e+00 1.59231682e-01
-4.65448920e+00 9.02147729e+00 1.32656133e+00 1.28449547e+01
-2.74403217e+00 -3.98864176e+00 1.33750842e+01 3.74896767e+01
3.95256083e+00 3.65358399e+00 1.56747951e+01 8.92459471e+00
2.04914148e+00 2.02676864e+00 3.57289117e+00 1.21093264e+01
1.55739004e+01 -1.18843887e+00 6.97958459e+00 1.80493990e+01
-8.33447724e-01 -3.62229079e+00 -1.54780794e+01 1.21632653e+01
3.78368391e+00 -3.97430599e+00 1.45310626e+01 -6.13507114e+00
3.65423785e+00 -4.07859333e+00 1.00196502e+01 8.03760493e+00
-2.12537714e+01 7.09921134e-01 6.76507254e+00 1.26567850e+01
1.16641138e+00 4.91098343e+00 1.16167337e+01 -6.40377486e+00
-4.44915880e+00 4.89451730e+00 1.39222511e+01 2.39825581e+00
1.09842336e+01 1.62243204e+01 1.68175170e+01 -3.16851665e+01
1.17984371e+00 -1.05535085e+01 5.23529489e+00 2.14209211e-01
1.08190563e+01 2.21035716e+00 1.50882382e+01 6.80606293e+00
5.50516834e+01 -2.30125523e+00 -4.63767391e-01 4.21293741e+00
2.68926423e+00 6.58892711e+00 1.22812706e+01 4.03343154e+00
3.39359379e+00 1.04462407e+01 -5.33619890e+00 -5.10175091e+00
-7.07683424e+00 4.14312618e+00 -1.25323370e+01 4.41161760e-02
2.21865805e+00 -4.58571335e+00 -5.00546667e+00 -1.72470362e+01
9.32024719e+00 -1.78378378e+01 2.16175949e+00 2.44962248e+01
1.83171321e+01 -3.21766562e+00 -3.26181408e+00 -1.45443304e-01
-5.29213620e+00 -1.56588009e+00 1.49610829e+01 1.40350948e+01
-2.65128620e-02 2.18210350e+01 -1.30672675e+01 1.87330126e+01
1.27768314e+01 7.06747682e+00 2.96140491e+00 1.15394839e+01
7.35122938e+00 8.03337710e+00 8.70993837e+00 1.75113086e+01
-4.71296934e+01 6.81252594e+00 -1.84380169e+01 1.96554482e+00
1.70513620e+00 1.41748988e+01 4.44130404e+00 1.45390134e+01
7.89478488e-01 5.25422719e+00 6.64275945e+00 -1.42927642e+01
1.38551058e+01 2.47075040e+01 2.57318340e+00 7.49696478e+00
1.06224905e+01 4.18335071e+00 -1.97396991e+00 1.16370769e+01
3.06250063e+01 1.99390853e+01 2.34597611e+00 6.07996215e+00
1.36669047e+00 3.51442488e+00 1.20811964e+01 6.97673767e+00
-1.08660148e+01 6.02294849e+00 5.92784726e+00 1.08003574e+01
6.88578786e+00 -1.12290862e+01 1.15078463e+01 7.03141265e+00
-2.02659911e+01 -3.61785059e-01 1.89429051e+01 -8.59119742e+00
3.31773465e+01 1.86832740e+00 7.29879090e+00 8.81032377e+00
6.23785452e+00 1.08441158e+01 1.11456540e+01 -3.29669458e+00
4.93131727e+00 -1.25587392e+01 9.52996596e+00 5.79688444e+00
6.58555391e+00 9.98003942e+00 8.42083596e+00 -2.41230769e+01
1.48103212e+01 9.64142629e-01 8.65287198e-01 3.12899106e+00
3.82102080e+00 -9.31700402e+00 5.10205991e-01 3.19052723e+00
-8.23055266e+00 6.07218809e+00 3.13099052e+00 -5.30526316e+00
1.06605376e+01 3.51562511e+00 -5.56439292e+00 1.03288203e+01
6.99370887e+00 -3.03446151e+00 4.98751528e-01 1.91607380e+01
3.42424545e+00 6.58550301e+00 5.37164261e+00 -1.66323624e+01
2.93833502e-01 1.74562005e+01 -2.32441907e+01 1.34259729e+01
1.69953198e+01 -7.65915784e+00 2.04327672e+01 -2.51065117e+01
6.74594290e+00 7.23276369e+00 1.54628331e+01 -9.89837787e+00
-5.14675032e+00 1.65379834e+01 4.00442430e+00 1.22382601e+01
4.37206985e+00 5.28482205e+00 1.40444235e+01 -1.39063419e+01
-2.79184886e+00 1.19707325e+01 -8.66449033e-01 -8.51393278e+00
-4.47981366e+01 -2.87447789e+00 -1.65079153e+00 5.94211823e+00
1.31293681e+01 -8.83367840e+00 1.36242259e+01 1.16814159e+00
1.56071797e+01 3.48039173e+01 1.30295476e+01 1.30331514e+00
2.32493691e+01 8.58409101e+00 9.23447905e+00 9.97191212e+00
-1.69482767e+01 8.21529352e+00 8.58382131e+00 -5.13655212e+00
1.46627305e+00 3.80418148e+00 -1.23711354e+01 -2.79797677e+00
8.06523941e+00 9.24824783e+00 1.73415223e+01 6.02880540e+00
1.00275192e+01 -1.44853861e+00 2.34595796e+01 2.19283001e+01
2.13104241e-01 6.27730254e+00 1.39253411e+01 -1.98662281e+00
5.53291227e+00 -2.30970711e-01 7.06118584e+00 -3.09881858e+01
-2.61010890e+00 8.54452902e+00 1.00097595e+00 2.94965413e+01
-1.44033722e+01 1.38340493e+00 7.69653360e+00 3.65691504e+00
1.99014739e+01 9.47476828e+00 1.10097290e+01 1.48877266e+01
-8.69891720e+00 9.34768280e+00 -1.15858794e+00 1.66788361e+01]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Volatility' are
[1.68715106 2.19788722 1.27364601 1.35767892 1.70116879 1.51649264
1.11697633 1.12418643 1.06848509 1.04829468 1.10696539 1.16333364
1.11260424 1.05205031 1.38450167 1.97432252 1.77343079 1.05326602
1.28379478 2.02292079 1.46003013 1.08926624 2.09306542 1.6302589
1.22225951 1.16580402 1.46038649 1.4809144 1.51165436 1.10503221
2.40540795 2.43516482 1.00776167 2.59206524 1.88633452 1.13287498
1.84717959 1.17152528 0.9000662 1.15590486 1.41868781 1.20452559
1.07767848 1.39443569 2.55955343 1.82599372 1.20166021 1.38668418
1.49887213 1.49176424 2.0587686 1.08946885 1.26198423 1.49355294
0.94484686 1.29785712 0.96019059 1.34723905 2.00082766 2.36818555
1.18923614 0.92902624 4.55981453 1.18547264 1.697942 1.58839801
0.93581223 0.89547081 1.55765486 1.32334793 2.47400169 1.47236379
1.03784428 2.29869617 1.38986704 1.36459176 3.05581758 1.55505705
1.62621905 1.52219355 1.33812318 1.96886384 1.48736738 1.75065524
2.69254622 0.88993126 1.44421868 1.57788128 1.55194552 1.15989696
1.38148979 1.19146592 1.18845397 1.6892346 1.81214432 1.44088445
1.07040583 1.33792353 1.50756854 1.15079692 1.09672735 1.2116427
2.92369768 1.40930182 1.07851567 1.0680017 1.08104026 0.92725976
1.40450816 1.94110389 1.30808151 1.05618603 2.36488263 1.23282885
1.11842457 1.4520483 1.52142989 1.21740068 1.66648249 1.35159454
1.0625527 1.57874658 1.18605933 1.15145372 1.41139553 1.32060613
1.34829666 3.79641004 1.23878468 1.14829451 0.90448658 1.76119277
1.77445407 1.78166051 2.17573838 1.23985802 2.07521591 2.02681808
0.93954369 1.39034206 1.49406049 1.57848271 1.34451442 1.17702685
1.66547459 1.52277794 1.34859719 1.9660615 1.58335507 1.33779254
1.91490726 1.34173146 1.28228628 2.3985804 1.14733221 1.56037194
1.10344894 3.40049106 2.37335889 1.07845549 1.01392243 1.59462774
1.18838275 1.61520603 1.08288064 1.46958571 1.15285453 1.22602189
1.3016302 1.13979942 1.30138165 1.12600938 1.14286861 1.58083869
1.21837263 1.73299014 1.84176674 1.13033734 1.22468825 0.87040465
3.13935157 0.88991256 2.07163924 1.20403738 1.56916714 1.60312963
1.42723709 1.51343434 1.44062152 0.90309766 1.11584212 1.5542353
1.53629044 1.45701312 1.6097448 1.09587575 1.17777601 1.16932806
1.64244991 1.4283592 1.921708 0.73316318 1.26879979 1.32154764
1.13865048 1.49247842 1.71840329 1.03222106 2.16414979 1.03416246
0.98269841 1.58594449 0.95900798 2.83067523 1.98937101 1.27846009
3.32538642 1.38038978 1.11537571 2.85118007 2.29930409 2.23082675
2.50943706 1.56325826 1.02337505 2.53605034 2.60594879 2.42152915
1.19849259 1.95202036 2.1688136 1.28156631 1.46061929 1.64129973
1.10458128 3.56017767 1.0663693 1.08937038 1.58951974 1.1328129
1.25961075 1.4395637 1.03980326 1.26834034 1.18066131 0.80535713
1.2387481 1.52898492 0.80605597 1.08689787 1.69475119 0.86145337
1.12053368 1.8759105 1.14342144 1.5330026 1.10905888 1.22746706
1.37958859 2.95429144 1.13123977 1.92575419 1.94596571 1.5565117
1.80234528 1.14237004 1.05880661 3.71299533 0.83982097 1.26623967
1.45693998 2.03078573 1.58011699 1.42648779 1.09196684 1.7738653
0.8950593 1.13554603 1.08085768 1.20381569 1.12644779 1.43793764
1.44464394 2.01739436 4.58004173 1.83502828 1.13816285 0.85944183
1.21780338 2.73065911 1.79726923 1.02296759 1.24775112 1.57834356
0.95936484 1.43110855 1.58671931 1.85413193 1.57924824 1.26347939
1.75882399 1.74760571 1.15790642 2.0486974 1.48234857 1.10284754
1.43029672 0.82640811 0.9493961 1.0348433 1.6269339 1.84570997
1.0197243 1.45401865 1.37947984 2.45653493 1.4449241 0.8425918
1.04461471 1.10303264 0.96977356 2.39780299 0.94036597 3.71955968
1.27305085 1.33806702 1.33191818 3.79478323 2.3979403 1.0150524
0.99101052 1.37006187 1.00723035 1.86668025 1.16631103 1.84514878
1.47887743 1.40420566 1.46817588 1.61028462]
----------------------------------------------------------------------------------------------------
Unique values in the column 'ROE' are
[135 130 21 9 14 10 30 11 2 15 3 35 601 18 25 22 4 19
23 917 52 24 8 29 82 6 12 38 17 20 7 27 16 687 44 589
463 1 42 64 205 26 5 13 155 28 98 34 41 51 92 228 36 33
582 116 68 63 263 167 103 182 61 43 244 73 45 47 32 121 40 48
596 200 196 37 59 109 60 174 86 142]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Cash Ratio' are
[ 51 77 67 180 272 49 25 14 9 99 47 225 13 74 45 195 131 37
362 39 58 1 70 80 22 175 163 4 24 128 82 84 133 10 53 12
36 20 333 38 0 27 237 48 43 3 182 52 11 8 31 60 26 79
271 2 15 164 201 44 257 94 29 35 958 5 18 81 73 190 496 148
33 121 30 16 189 92 103 41 40 162 317 130 23 108 7 42 54 61
46 260 183 17 136 568 62 71 57 117 6 198 65 21 147 64 34 110
184 68 129 19 116 88 212 115 126 56 127 221 425 83 459 100]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Net Cash Flow' are
[ -604000000 51000000 938000000 -240840000 315120000
-189000000 90885000 287000000 13900000 -308000000
-129000000 21818000 -30351000 166000000 50823000
-2276034000 -34000000 -162000000 -90800000 66000000
1795000000 3390000 13200000 413000000 -281000000
7194000 1333000000 -1300000 -38200000 10000000
698000000 -6430000000 768300000 42000000 -3025000000
-108953000 218000000 22000000 474000000 -431000000
20764000000 -712000000 1386000000 -9600000 584000000
148900000 -433000000 32600000 -3186000000 -268000000
-220100000 -1039361000 -11208000000 -881000000 1120000000
-200481000 3190000 1064000000 758700000 -1710600000
-191000000 -93000000 -3283000000 39289000 2000000
548000000 -47000000 -119000000 76000000 326500000
-171460000 -590000000 39000000 150000000 781000000
-20440000 -8796000 -41000000 -2000000 115100000
108369000 -22000000 -1763000000 228529000 289000000
-116000000 -1610000000 375200000 2288000000 -59000000
-2214800000 848000000 23000000 -325000000 22239000
46300000 -319396000 683000000 -1179000000 533875000
830000000 -4496000000 -116800000 249000000 -35000000
29000000 79000000 -1368707000 1617921000 2196000
523803000 -14756000 4073000 450000000 -513000000
-71065000 64600000 4624000000 -119311000 273599000
28136000 3515000000 14523000 592000000 46600000
-240000000 46000000 194800000 -19000000 -58589000
-43239000 -83906000 -30900000 -26905000 -355228000
254000000 -1603000000 -15576000 2824000000 -809000000
-3857000000 73901000 -363198000 -685000000 63492000
7786000000 83583000 -373409000 175000000 -112818000
162690000 272000000 49000000 -184471000 -1504000000
7523000000 2300000000 13065000 -17388000 -445000000
-28325000 636000000 -790000000 -193542000 -296585000
12747000000 -831000000 -157700000 2448000 114300000
-900000000 412000000 -395000 -271788000 -218700000
-7341000000 2212000 -170000000 -86000000 -1649000000
-211400000 -79600000 -123369000 136400000 -27208000
-235000000 -205200000 -356000000 -51100000 -638127000
301000000 274000000 -107000000 610000000 10906000
1603000 -8000000 85000000 -78836000 5607600000
537900000 239000000 1944000000 -16185000 403700000
35300000 59758000 -584000000 -99000000 1805094000
-952000000 -1098300000 -367000000 1083000000 -1177000000
-5317000 13624000 -910125000 1010500000 151000000
-155000000 -126000000 -6000000 379000000 695722000
-9000000 84000000 -1456000000 128000000 3394000000
915325000 75400000 36442000 -75150000 217100000
-134259000 -588000000 -298400000 -403561000 278800000
-28000000 -1671386000 2962000000 298000000 700900000
160383000 116000000 -533785000 1735000000 -295000000
15900000 31884000 625000000 -563000000 2694000000
-2133000000 -61744000 21000000 -808000000 10853000
-67676000 -62542000 168081000 23000 -42800000
615000000 73000000 165012000 -26010000 -654720000
694000000 88852000 -1016000000 33398000 -167000000
-2630000000 -648000000 237800000 -38000000 497000000
1584000000 -3482000000 -150300000 5000000 10716000
-4636000 -891400000 159000000 6000000 12679000
250000000 -58000000 100145000 -199000000 -463323000
1004000000 -8482000 29159000 3428000000 10400000
-195000000 439000000 1630000000 -3800000 425000000
142787000 637230000 98989000 37051000 89509000
-1803000 -6128000000 65488000 -12100000 -460000000
-254000000 -1268000000 -140000000 -467300000 -568000000
-12000000 -102075000 373520000 5332000 734422000
-911000000 133000000 -43000000 17000000 -1032187000
376000000 -43623000]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Net Income' are
[ 7610000000 5144000000 4423000000 629551000 696878000
1849000000 596541000 636000000 2052300000 2533000000
2196000000 248710000 141555000 356800000 321406000
334906000 848000000 2171000000 153900000 144000000
1377000000 590859000 516000000 6939000000 1562000000
685074000 596000000 442600000 2560000000 1385000000
-23528000000 -6692000000 763500000 -322000000 892000000
741733000 1364000000 476000000 5163000000 5176000000
15888000000 968000000 2084000000 135400000 -1967000000
3547000000 3158000000 280900000 1565000000 -239000000
609700000 583106000 17242000000 2512000000 2834000000
547132000 1520992000 1757000000 1602000000 664900000
840000000 410400000 -14685000000 509699000 -271000000
2094000000 634000000 1384000000 521000000 1247000000
475602000 1399000000 537000000 355000000 -692000000
4050000000 -113891000 203523000 1968000000 878000000
1623600000 319361000 5237000000 4587000000 65900000
1899000000 4526000000 1953000000 1940000000 2297000000
709000000 3357400000 8382000000 1034000000 1450000000
296689000 168800000 869829000 764000000 2816000000
269732000 -14454000000 1725000000 1002100000 1193000000
429100000 1117000000 -4524515000 187774000 870120000
85171000 878485000 232120000 268000000 1979000000
-156734000 494900000 2269000000 457223000 764465000
394950000 7373000000 516361000 3669000000 315000000
-12156000000 578000000 650800000 712000000 241686000
412512000 267669000 489000000 210219000 546421000
-196000000 2965000000 1374561000 18108000000 1339000000
9687000000 705672000 456227000 307000000 768996000
-671000000 451838000 692957000 2129000000 849073000
-559235000 -3056000000 1682000000 752207000 4768000000
2461000000 4554000000 686088000 479058000 558000000
512951000 1276000000 13190000000 192078000 419247000
11420000000 938000000 454600000 123241000 588800000
968100000 427235000 302971000 633700000 24442000000
894115000 1013000000 253000000 7351000000 483500000
329200000 802894000 436900000 423223000 -240000000
2408400000 3605000000 388400000 252111000 2181000000
3433000000 4476000000 3808000000 350745000 487562000
859000000 369416000 4529300000 941300000 7267000000
5310000000 615302000 653500000 401600000 288792000
1599000000 4833000000 546733000 5241000000 1000400000
2852000000 4442000000 -2204000000 1079667000 352820000
-2270833000 847600000 997000000 -2441000000 428000000
2752000000 220000000 122641000 -3362000000 570000000
-769000000 1556000000 973800000 357659000 350000000
283766000 244977000 1093900000 931216000 -7829000000
260100000 407943000 1604000000 888000000 2551360000
1679000000 5452000000 6960000000 1234000000 636056000
1267600000 494090000 6873000000 4106000000 -76400000
437257000 1406000000 682000000 5642000000 4227000000
321824000 1547000000 1228000000 304768000 665783000
357796000 696067000 -713685000 749900000 746000000
1447000000 196000000 225400000 1053849000 284084000
606828000 2421000000 2139375000 1156000000 267046000
1350000000 1933000000 1980000000 798300000 -4556000000
2214000000 1439000000 13345000000 359500000 -214000000
459522000 527100000 1975400000 198000000 3439000000
410395000 1220000000 1540000000 369041000 2986000000
232573000 7340000000 340383000 680528000 5813000000
867100000 4772000000 4844000000 7608000000 411500000
3990000000 221177000 760434000 507577000 375236000
-556334000 419222000 17879000000 469053000 640300000
22894000000 783000000 753000000 -571000000 837800000
506000000 612000000 195290000 -2408948000 984485000
1201560000 16150000000 251200000 474000000 340000000
-4359082000 1293000000 147000000 309471000 339000000]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Earnings Per Share' are
[ 11.39 3.15 2.94 1.26 0.31 2.99 8.91 2.6 3.13
5.88 1.69 1.52 2.08 2.07 1.8 3.01 6.61 5.12
1.6 0.68 1.13 2.46 9.49 9.15 8.6 1.42 1.28
3.93 9.73 4.93 -61.2 -13.18 2.47 -0.31 1.21 5.54
2.86 2.66 3.9 7.52 4.18 1.78 2.59 -4.49 15.38
2.73 2.05 0.94 -0.18 2.72 3.79 5.41 3.54 8.71
1.64 4.44 2.26 2.02 2.97 1.55 -22.43 3.52 -2.43
8.17 3.87 1.53 2.93 3.71 15.3 7.86 1.9 -1.61
7.15 -0.28 1.79 2. 1.58 2.67 2.01 4.66 0.54
3.21 5.68 2.17 4.03 5.14 4.92 4.81 4.95 5.08
1.56 4.68 5.52 4. 4.05 1.27 -35.55 1.43 3.38
4.07 3.61 5.71 -8.29 3.25 2.37 0.56 2.77 3.5
0.92 4.25 -0.99 2.3 2.685 2.42 5.87 1.86 1.77
1.31 1.97 -11.31 1.37 2.22 3.04 1.73 2.85 3.66
5.42 -0.29 9.23 12.37 1.02 6.11 4.65 2.39 1.14
11.69 -0.79 0.82 2.35 -1.21 -10.78 3.28 5.78 0.22
8.54 13.48 5.19 2.41 2.25 1.11 0.58 15.87 5.16
3.69 1.62 6.05 2.78 0.1 4.41 2.31 5.03 3.03
-2.97 2.27 11.62 3.36 0.74 3.3 9.71 9.62 3.08
3.22 1.03 1.08 4.82 4.7 4.49 4.61 3.14 4.31
7.72 2.79 5.29 -3.26 7.22 12.75 -13.03 -6.07 2.56
0.43 0.29 -21.18 -1.99 5.13 1.3 1.09 1.17 4.43
9.32 -10.23 0.86 2.04 4.52 1.81 50.09 3.32 4.11
2.16 1.38 4.42 -0.42 3.94 5.18 1.01 7.78 1.59
5.39 1. 5.75 6.17 6.92 -4.29 2.14 5.22 1.04
1.63 11.38 4.26 3.02 5.43 3.62 4.53 4.21 3.82
1.94 -1.53 4.96 10.99 12.5 1.98 19.52 6.89 6.1
3.51 5.51 5.38 8.72 4.13 8. 1.66 3.07 3.29
-2.31 4.38 5.7 2.36 9.95 -0.76 0.89 1.93 -25.92
4.22 3.85 0.42 1.88 -4.64 0.78 1.2 ]
----------------------------------------------------------------------------------------------------
Unique values in the column 'Estimated Shares Outstanding' are
[6.68129938e+08 1.63301587e+09 1.50442177e+09 4.99643651e+08
2.24799355e+09 6.18394649e+08 6.69518519e+07 2.44615385e+08
4.21897810e+08 4.30782313e+08 1.29940828e+09 1.63625000e+08
6.80552885e+07 1.72367150e+08 1.78558889e+08 1.11264452e+08
1.28290469e+08 4.24023438e+08 9.61875000e+07 2.11764706e+08
1.21858407e+09 2.40186585e+08 5.43730242e+07 7.58360656e+08
1.81627907e+08 4.82446479e+08 4.65625000e+08 1.12620865e+08
2.63103803e+08 2.80933063e+08 3.84444444e+08 5.07738998e+08
3.09109312e+08 1.03870968e+09 7.37190083e+08 1.33886823e+08
1.04405594e+09 1.78947368e+08 5.06660363e+08 6.88297872e+08
8.45069512e+08 5.43820225e+08 8.04633205e+08 7.52222222e+07
4.38084632e+08 2.30624187e+08 1.15677656e+09 1.37024390e+08
1.66489362e+09 1.32777778e+09 2.24154412e+08 1.53853826e+08
3.18706100e+09 7.09604520e+08 3.25373134e+08 3.33617073e+08
3.42565766e+08 7.77433628e+08 7.93069307e+08 2.23872054e+08
5.41935484e+08 1.31118211e+08 6.54703522e+08 1.44800852e+08
1.11522634e+08 2.56303550e+08 1.63824289e+08 9.04575163e+08
1.77815700e+08 3.36118598e+08 3.10850980e+07 1.77989822e+08
2.82631579e+08 1.18729097e+08 4.29813665e+08 5.66433566e+08
4.06753571e+08 1.40335196e+08 9.84000000e+08 5.55696202e+08
6.08089888e+08 1.58886070e+08 1.12381974e+09 1.86463415e+09
1.22037037e+08 5.91588785e+08 7.96830986e+08 9.00000000e+08
5.32235888e+08 4.46887160e+08 1.44105691e+08 6.98004158e+08
1.69333333e+09 2.85433071e+08 1.90185256e+08 3.60683761e+07
1.57577717e+08 1.91000000e+08 6.95308642e+08 2.12387402e+08
4.06582278e+08 1.20629371e+09 2.96479290e+08 2.93120393e+08
1.18864266e+08 3.56869010e+08 1.48511384e+08 5.45779855e+08
5.77766154e+07 3.67139240e+08 1.52091071e+08 3.17142599e+08
6.63200000e+07 2.91304348e+08 4.65647059e+08 1.58317172e+08
2.15173913e+08 2.99887089e+08 1.88935124e+08 1.30232538e+08
2.49968354e+08 3.96397850e+09 2.91729378e+08 2.80076336e+09
1.59898477e+08 1.07480106e+09 2.93153153e+08 2.34210526e+08
1.39702890e+08 1.44741053e+08 1.33168657e+08 1.33606557e+08
6.91509868e+07 1.00815683e+08 6.75862069e+08 3.21235103e+08
1.58299351e+08 1.46386419e+09 1.31274510e+09 1.58543372e+09
1.51757419e+08 1.90889958e+08 2.69298246e+08 6.57823781e+07
8.49367089e+08 1.25162881e+08 4.14202335e+08 3.61307660e+08
4.62177686e+08 2.83487941e+08 4.15308642e+08 2.02751213e+08
7.80360066e+08 5.13987730e+08 1.99237805e+08 8.28820069e+07
2.53636364e+09 1.49414520e+08 9.78486647e+08 9.27913043e+07
8.07797688e+07 4.73858921e+09 4.16888889e+08 4.09549550e+08
2.12484483e+08 3.71014493e+07 3.68023256e+08 4.28362832e+08
1.15781843e+08 1.25194628e+08 3.91172840e+08 4.04000000e+09
4.44833333e+08 3.64388489e+08 2.53000000e+09 4.34970414e+09
1.09637188e+08 1.42510822e+08 2.07466150e+08 1.78246546e+08
2.13598256e+08 8.08080808e+07 1.06096916e+09 3.10240964e+08
1.15595238e+08 3.40690540e+08 6.60909091e+08 3.53553038e+08
4.65280665e+08 1.13333333e+09 7.95340136e+07 2.66770186e+08
3.44660194e+08 3.42051852e+08 9.39688797e+08 2.00276596e+08
1.61848552e+09 1.15184382e+09 2.37568340e+08 1.27898089e+08
6.70051044e+07 5.31229236e+08 6.26036269e+08 1.46954178e+09
1.96292135e+09 3.58566308e+08 5.39130435e+08 2.81139240e+09
6.76073620e+08 1.49538366e+08 2.76721569e+07 1.74277283e+08
3.74812030e+08 4.02141680e+08 1.67187500e+08 4.50409165e+08
5.11627907e+08 4.22900000e+08 1.58734655e+08 3.67741936e+08
3.86432161e+08 3.03313840e+08 2.41637717e+08 3.22215315e+08
2.69230769e+08 2.60335780e+08 2.09382051e+08 2.46930023e+08
9.99158798e+07 7.65298143e+08 3.02441860e+08 1.99972059e+08
3.54867257e+08 4.90607735e+08 5.09355161e+07 5.05722892e+08
6.15929204e+09 3.00243309e+08 4.91391569e+08 5.86851852e+08
3.58036232e+08 1.55497738e+09 5.46010638e+08 1.81904762e+08
1.10978934e+08 2.71428571e+08 6.75247525e+08 4.56103476e+08
5.43316195e+08 2.02405031e+08 2.87012987e+08 1.22800000e+09
5.30031304e+07 2.19730363e+08 1.03088493e+08 1.31542647e+08
1.00587717e+08 1.66360140e+08 3.50420561e+08 1.42911877e+08
1.39134615e+09 1.38282209e+08 9.26053603e+07 2.78513726e+08
1.29664103e+08 9.31153846e+08 3.63839286e+08 2.71361502e+08
8.84258278e+07 2.48618784e+08 5.33977901e+08 4.37086093e+08
1.89619952e+08 8.32330827e+08 3.76701571e+08 5.63080169e+09
1.85309278e+08 1.39869281e+08 2.25255882e+08 1.25201900e+08
3.98266129e+08 1.43478261e+08 3.12920837e+08 1.35443894e+08
1.23200000e+08 1.86384343e+08 3.76024590e+08 2.61833077e+08
9.87703919e+07 9.52950820e+08 2.47037037e+08 8.66061706e+08
9.00371747e+08 8.72477064e+08 9.96368039e+07 4.98750000e+08
1.33239157e+08 2.10646537e+08 1.65334528e+08 1.14053495e+08
2.40837229e+08 3.32715873e+08 4.08196347e+09 8.22900000e+07
2.71313559e+08 5.47703349e+09 7.86934673e+07 4.53614458e+08
7.51315790e+08 5.68539326e+08 1.18146718e+08 1.01186528e+08
9.29378086e+07 5.07466495e+08 2.84729858e+08 4.19480520e+09
1.12857143e+09 1.80851064e+08 9.39457328e+08 4.35353535e+08
1.88461538e+08 2.57892500e+08 4.98529412e+08]
----------------------------------------------------------------------------------------------------
Unique values in the column 'P/E Ratio' are
[ 3.71817366 18.80634984 15.2755102 74.55555714 178.4516129
12.26755853 31.04040483 16.62692308 18.45654341 10.18707517
36.66863964 26.33552566 38.72115433 19.77777729 29.23888944
18.60797276 12.18003056 12.12695313 41.19999875 280.5147059
16.52212389 21.78455285 16.83456217 17.74098383 12.37441837
68.27464577 528.0390742 15.18066158 14.33093546 18.70385375
93.0892875 21.14574899 18.68760706 31.99173471 33.236463
18.24940665 22.46240602 10.26350566 19.22739309 13.00478493
21.43258539 14.59845598 105.2444456 19.91872601 15.09890147
35.47805024 73.18085213 31.46896164 15.89338235 33.6517153
9.56561922 19.19773983 13.41561401 21.08536707 19.47072005
24.10619469 59.2871297 13.74074108 16.89677484 13.55910495
28.40792888 17.61931818 20.81987609 17.91064896 15.28940517
43.54248562 14.27645119 24.42048464 31.36274549 11.19720127
18.98947474 22.01003278 17.31307587 10.0951049 33.99441229
12.9750005 15.92405063 22.47940075 37.63681692 20.98068605
36.56910528 171.9629648 21.07165078 8.9242956 30.69124332
14.84223297 10.43190642 14.45934939 14.63970579 21.22828323
16.87598484 48.4743609 22.20726496 11.10688424 23.29999925
17.62716025 54.88976299 19.21678322 33.8402358 15.79115405
30.85041634 18.91693259 11.82311769 93.046152 34.42615865
18.4368231 68.40285829 32.21739022 12.24470612 34.33913174
18.63636281 21.17546899 55.82911329 7.57526882 23.06214689
79.89313282 28.17258883 22.81195132 23.16058394 27.2972964
30.08552599 16.22543353 16.5684214 20.93532438 10.6912571
48.0592125 12.17527638 14.51898734 14.88190693 47.36697339
8.18027502 17.92156961 5.56628445 18.47096753 15.55230042
28.65789298 17.33019641 18.65928006 13.48780488 13.15758696
28.94893574 10.73086395 12.23450108 16.95090016 25.30952381
24.07012104 27.36851246 69.72727273 20.90280972 10.20919844
35.22705217 23.05202293 14.29460622 16.755556 20.97297387
46.56896552 34.41461708 17.96124031 14.81415929 19.88075908
17.33471116 17.03703704 10.91404942 13.16417861 45.79136799
149.2 25.42011775 16.93197234 18.19047619 12.63824289
15.90093725 37.11894361 9.29315491 23.49999865 13.04848515
5.59835232 9.03326424 28.97619077 20.59183628 26.1980526
27.47572718 25.15740741 24.51037324 21.34893532 9.98663697
10.45770043 73.12355174 27.24840701 31.68909559 18.42192724
19.51295324 21.80149775 9.88888889 9.79962193 33.43037975
16.78393352 26.59843176 4.30451128 22.72265547 17.00327316
41.8372093 394.4137828 30.06451484 16.48927797 17.88833648
36.30630541 33.90769385 21.07692308 17.07900767 27.19098691
18.77906977 10.12254902 10.48672611 29.38673978 25.45318329
11.65361416 26.93261402 28.5663708 10.94403893 14.72222176
12.91304348 19.88914118 12.67420186 14.57922079 16.36548299
19.07722008 33.7920802 6.58124527 10.5141392 12.73584906
18.99814508 36.200001 9.88347861 33.40263993 87.98541248
17.33088199 27.42629957 20.5560757 11.58812299 31.66346154
82.55172759 27.36196196 110.7647088 11.79700833 17.99615423
33.06802755 23.14084554 39.93377417 11.83425414 14.64900684
11.43233083 24.32984346 48.4123701 12.50980392 13.57719715
28.59879153 61.77536232 10.26933585 28.21782178 8.42960024
25.15151465 19.16433601 2.93545077 28.9 17.34252511
19.28524574 9.48433077 14.19237695 17.88661766 11.01720183
19.56416538 8.83874987 57.21084398 27.68975042 25.0423443
26.55319179 39.60292786 44.78571429 10.55251164 23.61052667
21.74152585 14.76080352 32.15060181 10.98773006 33.68539326
14.02509691 35.84974197 18.51030928 9.28436019 20.24675247
19.41489362 17.68221394 131.5256359 22.74999917 70.47058529]
----------------------------------------------------------------------------------------------------
Unique values in the column 'P/B Ratio' are
[-8.78421945e+00 -8.75006804e+00 -3.94171377e-01 4.19965109e+00
1.05980998e+00 7.49683072e+00 1.29064585e+02 -7.19496855e-01
-3.02264878e+00 -1.88391201e+00 -4.32713829e+00 -1.26933216e+00
-4.07261517e+00 -9.85570628e+00 4.28235752e+00 -1.36497235e+01
-1.11465802e+00 -8.77452891e-01 -1.41713889e+01 3.85775599e+00
-4.49034237e+00 -3.10153798e+01 2.40123217e+01 -1.33983799e+01
-2.08135771e+01 3.90442953e+00 -7.97010393e+00 -3.10067734e+01
-7.75985560e+00 4.97080925e+00 -1.28609384e+01 8.20292338e+00
2.63981367e+00 2.90291480e-01 -3.08947652e+00 3.95497461e+00
-4.89529412e+00 -6.09073508e-01 2.20326121e+01 -9.38006774e-01
8.63704546e+00 -8.52562380e-01 -4.12776957e+00 1.34905440e+01
1.62602199e-01 -3.32129829e+00 -3.89565682e+00 5.88025559e-01
-3.88092050e+00 1.04481548e+00 -1.16753335e+00 6.26405255e+00
-1.74661009e+01 -3.41530183e+00 -1.06666788e+01 -7.47716562e+00
-4.32005119e+00 -3.93528350e-01 -6.30960570e-02 -9.42813353e+00
-1.84052775e+00 1.11780419e+00 -7.61190775e+01 -8.80528127e+00
-5.48323699e-01 -5.86495365e+01 1.72013290e+01 2.14394282e+01
6.36871510e-02 -1.30549296e+00 5.16502890e-01 -7.25643348e-01
-2.23147395e-01 8.55095541e-01 9.02439024e-01 -1.33832119e+01
7.12164449e+00 -1.76501314e+00 -7.01980905e+00 4.76393721e+00
5.67399059e+00 -7.60494471e+00 -1.67300221e+01 3.25222222e+00
6.27728687e+00 -3.75933827e-01 -4.55221439e+00 -1.37592304e+01
-3.98503937e+00 -6.62151724e-01 -7.48931346e+00 -1.18774408e+01
-2.29343975e+00 -1.27172775e+01 -4.42681108e+00 1.96252695e+00
1.78561644e+00 4.60169855e+00 -1.49288674e+01 -8.11682125e+00
-6.36928380e+00 -1.23088208e+01 1.41624318e+00 2.38567280e+01
9.56795153e+00 -1.16983338e+00 -5.97313433e-01 -8.63959070e+00
6.17402389e+00 6.34974742e+00 -1.71588003e+00 5.99145874e+00
-4.41034942e+01 -1.41514453e+01 5.10875627e+00 4.42742519e+00
5.88446716e+00 -2.10070794e+00 2.93542695e+00 -6.07256055e+00
-1.90866103e+01 -7.97573034e+00 4.01471293e+00 1.49926228e+01
6.74676025e+00 5.10154601e+00 -3.97339544e+00 2.25637911e+01
1.04977041e+01 4.24299831e+00 3.15944610e+00 3.61761016e+00
-4.89203675e+00 7.20524245e+00 5.76005679e+00 3.83589577e+00
1.21128792e+01 1.73458569e+01 1.21453261e+01 -6.50573700e-02
-7.27905120e+00 -3.73804696e+00 6.26481675e+00 6.06938909e+00
-3.70982592e+00 -1.98048307e+00 5.92567697e+00 -1.13548387e-01
4.85239120e+00 -9.81083310e-01 5.04769952e+00 6.12393390e+00
2.65657721e-01 -2.76365122e+00 4.26075000e+01 7.58647709e+00
4.21861998e+00 2.82384519e+00 6.29494262e+00 2.75223607e+00
-1.88688119e+00 -2.53301086e+00 -1.89407115e+00 -1.46630663e+00
-2.01209100e+00 2.93100547e+00 -3.07831974e-01 -1.29484372e+00
-8.57290222e-01 1.42807500e+01 -6.51102807e-01 -1.08528544e+01
-4.60659114e+00 1.98214162e+01 -5.11719395e+00 -2.24577338e+00
1.03163539e+01 3.45176471e+00 -1.23701979e+01 2.21957746e+00
4.53525099e+00 7.12214514e+00 8.61558483e+00 -1.28095060e+01
-3.98031573e+00 6.49575517e+00 3.05088697e+00 -1.95019387e+00
2.02384440e+00 -5.19073368e+00 -6.63297081e+00 5.84661735e+00
5.79822581e+00 -4.28293111e+00 1.27352995e+00 4.40399354e+00
-1.29800623e+00 -4.21330891e+00 -1.88094283e+00 1.17122901e+00
-1.17173832e+01 -7.35331395e+00 6.97186364e+00 -5.70016789e+00
-1.38596074e-01 -1.23755263e+01 9.58253576e+00 9.26433162e-01
1.11681066e+01 -2.07554286e+00 -8.02511003e+00 -1.04640982e+01
-3.64026219e-01 3.34510155e+00 -4.26858900e-01 -7.33207433e-01
6.29052120e+00 -1.12105856e+00 -1.05242872e+00 -3.61858249e-01
-4.52699514e+00 -2.25674696e+00 -8.43313348e-01 -1.41802706e+00
-6.94125670e-01 -6.57486911e+00 -6.08922771e+00 -5.93157895e-01
-2.82711144e+00 -4.17892734e+00 7.02905607e+00 4.29189430e+00
5.74886878e-01 5.43403909e+00 -1.20208938e+01 -1.57274805e+01
2.04089995e+01 4.08947221e+00 -1.62154690e+01 5.25089724e-01
-2.42822510e+00 -4.01646113e+00 -1.30089841e-01 -2.58040816e+00
-2.71690772e+00 2.82536561e+00 -7.96157903e+00 -2.79545642e+00
-1.88641943e+01 -8.54722222e+00 -2.48137610e+00 -4.04496970e+00
7.41377678e+00 -8.42213189e-01 7.02678249e+00 -2.35373233e+01
-2.53851293e+01 4.06808411e+00 -1.27265533e+01 -2.80325119e+01
2.62757576e+00 -8.91599302e-01 6.01095386e+00 4.59415584e+00
-2.34739137e+00 2.76805090e+00 -2.31952916e+01 6.25590309e+00
1.06689857e+00 1.06955822e+00 -1.31980547e+01 9.47139976e+00
1.52621554e+01 -2.66190517e-01 -1.08191192e+00 -1.36174399e+01
4.07654319e+00 2.55967070e+00 -4.04075101e+00 -2.63806868e+01
2.95471503e+01 -1.85099485e+00 -4.50863346e+01 -1.41529880e+00
-1.45611208e+01 -8.04377178e+00 2.28480237e+00 -1.02499673e+01
1.26957118e+01 7.18612812e+00 -2.26192667e+00 -7.76267729e+00
-2.70644272e+00 -2.95949367e-01 4.13047059e+00 6.26177457e+00
-3.83825986e+00 -2.38844490e+01 1.72306785e+00]
----------------------------------------------------------------------------------------------------
#Revisión de Datos duplicados
data.duplicated().value_counts()
False 340 dtype: int64
#Revisión de valores nulos
data.isnull().sum()
Ticker Symbol 0 Security 0 GICS Sector 0 GICS Sub Industry 0 Current Price 0 Price Change 0 Volatility 0 ROE 0 Cash Ratio 0 Net Cash Flow 0 Net Income 0 Earnings Per Share 0 Estimated Shares Outstanding 0 P/E Ratio 0 P/B Ratio 0 dtype: int64
Preguntas:
# function to plot a boxplot and a histogram along the same scale.
def histogram_boxplot(df, feature, figsize=(12, 7), kde=False, bins=None):
"""
Boxplot and histogram combined
data: dataframe
feature: dataframe column
figsize: size of figure (default (12,7))
kde: whether to the show density curve (default False)
bins: number of bins for histogram (default None)
"""
f2, (ax_box2, ax_hist2) = plt.subplots(
nrows=2, # Number of rows of the subplot grid= 2
sharex=True, # x-axis will be shared among all subplots
gridspec_kw={"height_ratios": (0.25, 0.75)},
figsize=figsize,
) # creating the 2 subplots
sns.boxplot(
data=df, x=feature, ax=ax_box2, showmeans=True, color="violet"
) # boxplot will be created and a star will indicate the mean value of the column
sns.histplot(
data=df, x=feature, kde=kde, ax=ax_hist2, bins=bins, palette="winter"
) if bins else sns.histplot(
data=df, x=feature, kde=kde, ax=ax_hist2
) # For histogram
ax_hist2.axvline(
df[feature].mean(), color="green", linestyle="--"
) # Add mean to the histogram
ax_hist2.axvline(
df[feature].median(), color="black", linestyle="-"
) # Add median to the histogram
### function to plot distributions wrt target
def distribution_plot_wrt_target(data, predictor, target):
fig, axs = plt.subplots(2, 2, figsize=(12, 10))
target_uniq = data[target].unique()
axs[0, 0].set_title("Distribution of target for target=" + str(target_uniq[0]))
sns.histplot(
data=data[data[target] == target_uniq[0]],
x=predictor,
kde=True,
ax=axs[0, 0],
color="teal",
stat="density",
)
axs[0, 1].set_title("Distribution of target for target=" + str(target_uniq[1]))
sns.histplot(
data=data[data[target] == target_uniq[1]],
x=predictor,
kde=True,
ax=axs[0, 1],
color="orange",
stat="density",
)
axs[1, 0].set_title("Boxplot w.r.t target")
sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow")
axs[1, 1].set_title("Boxplot (without outliers) w.r.t target")
sns.boxplot(
data=data,
x=target,
y=predictor,
ax=axs[1, 1],
showfliers=False,
palette="gist_rainbow",
)
plt.tight_layout()
plt.show()
# function to create labeled barplots
def labeled_barplot(df, feature, perc=False, n=None):
"""
Barplot with percentage at the top
data: dataframe
feature: dataframe column
perc: whether to display percentages instead of count (default is False)
n: displays the top n category levels (default is None, i.e., display all levels)
"""
total = len(df[feature]) # length of the column
count = df[feature].nunique()
if n is None:
plt.figure(figsize=(count + 1, 5))
else:
plt.figure(figsize=(n + 1, 5))
plt.xticks(rotation=90, fontsize=15)
ax = sns.countplot(
data=df,
x=feature,
palette="Paired",
order=df[feature].value_counts().index[:n].sort_values(),
)
for p in ax.patches:
if perc == True:
label = "{:.1f}%".format(
100 * p.get_height() / total
) # percentage of each class of the category
else:
label = p.get_height() # count of each level of the category
x = p.get_x() + p.get_width() / 2 # width of the plot
y = p.get_height() # height of the plot
ax.annotate(
label,
(x, y),
ha="center",
va="center",
size=12,
xytext=(0, 5),
textcoords="offset points",
) # annotate the percentage
plt.show() # show the plot
1. ¿Cómo es la distribución de los precios de las acciones?
# Distribución de los precios de las acciones?**
histogram_boxplot(data, "Current Price", figsize=(8, 8), kde=False, bins=None)
data["Current Price"].describe()
count 340.000 mean 80.862 std 98.055 min 4.500 25% 38.555 50% 59.705 75% 92.880 max 1274.950 Name: Current Price, dtype: float64
El histograma muestra la distribución de los precios actuales "Current Price", Precio actual de la acción en dólares.
La distribución del histograma de los precios actuales sería asimétrico, con una cola más larga en el lado derecho.
Esto se debe a que la mediana (59.705) es menor que la media (80.862).
La cola derecha del histograma es más larga que la cola izquierda. Lo cual es de esperar cuando hay más precios altos que precios bajos.
La desviación estándar de la distribución es de 98.055 dólares. Esto indica que la variación de los precios actuales es relativamente alta.
En la distribución de precios actuales, el percentil 25 es de 38.555 dólares. Esto indica que el 25% de los precios actuales son menores que este valor. El percentil 50 es de 59.705 dólares, que es la mediana. El percentil 75 es de 92.880 dólares.
El valor máximo del histograma es de 1.274,950 dólares.
Esto indica que hubo un precio actual excepcionalmente alto. Hay una diferencia importante entre el P75 y el valor máximo.
La desviación estándar es una medida de la dispersión de los datos alrededor de la media. En este caso, la desviación estándar es de 98,055 dólares. Esto significa que, en promedio, los precios actuales de las acciones están a 98,055 dólares de la media. Una desviación estándar alta indica que los precios actuales de las acciones son más impredecibles.
Hay presencia de valores extremos altos.
#Obtener el percentil 75 de los datos y agrupar a las empresas con precios más altos de sus acciones.
percentile_75 = data["Current Price"].quantile(0.75)
mayor_P75 = data[data["Current Price"] > percentile_75]
mayor_P75
| Ticker Symbol | Security | GICS Sector | GICS Sub Industry | Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | ADBE | Adobe Systems Inc | Information Technology | Application Software | 93.940 | 13.977 | 1.358 | 9 | 180 | -240840000 | 629551000 | 1.260 | 499643650.800 | 74.556 | 4.200 |
| 6 | ADS | Alliance Data Systems | Information Technology | Data Processing & Outsourced Services | 276.570 | 6.189 | 1.117 | 30 | 25 | 90885000 | 596541000 | 8.910 | 66951851.850 | 31.040 | 129.065 |
| 19 | ALXN | Alexion Pharmaceuticals | Health Care | Biotechnology | 190.750 | 22.338 | 2.023 | 2 | 195 | 66000000 | 144000000 | 0.680 | 211764705.900 | 280.515 | -14.171 |
| 22 | AMG | Affiliated Managers Group Inc | Financials | Asset Management & Custody Banks | 159.760 | -6.611 | 2.093 | 18 | 67 | 13200000 | 516000000 | 9.490 | 54373024.240 | 16.835 | -31.015 |
| 23 | AMGN | Amgen Inc | Health Care | Biotechnology | 162.330 | 17.163 | 1.630 | 25 | 362 | 413000000 | 6939000000 | 9.150 | 758360655.700 | 17.741 | 24.012 |
| 24 | AMP | Ameriprise Financial | Financials | Asset Management & Custody Banks | 106.420 | -2.421 | 1.222 | 22 | 67 | -281000000 | 1562000000 | 8.600 | 181627907.000 | 12.374 | -13.398 |
| 25 | AMT | American Tower Corp A | Real Estate | Specialized REITs | 96.950 | 10.233 | 1.166 | 10 | 39 | 7194000 | 685074000 | 1.420 | 482446478.900 | 68.275 | -20.814 |
| 26 | AMZN | Amazon.com Inc | Consumer Discretionary | Internet & Direct Marketing Retail | 675.890 | 32.268 | 1.460 | 4 | 58 | 1333000000 | 596000000 | 1.280 | 465625000.000 | 528.039 | 3.904 |
| 28 | ANTM | Anthem Inc. | Health Care | Managed Health Care | 139.440 | -0.620 | 1.512 | 11 | 70 | -38200000 | 2560000000 | 9.730 | 263103802.700 | 14.331 | -31.007 |
| 35 | AVB | AvalonBay Communities, Inc. | Real Estate | Residential REITs | 184.130 | 4.858 | 1.133 | 8 | 47 | -108953000 | 741733000 | 5.540 | 133886823.100 | 33.236 | -3.089 |
| 36 | AVGO | Broadcom | Information Technology | Semiconductors | 145.150 | 17.903 | 1.847 | 29 | 163 | 218000000 | 1364000000 | 2.860 | 1044055944.000 | 18.249 | 3.955 |
| 39 | BA | Boeing Company | Industrials | Aerospace & Defense | 144.590 | 10.105 | 1.156 | 82 | 24 | -431000000 | 5176000000 | 7.520 | 688297872.300 | 19.227 | 22.033 |
| 43 | BCR | Bard (C.R.) Inc. | Health Care | Health Care Equipment | 189.440 | 1.549 | 1.394 | 9 | 82 | -9600000 | 135400000 | 1.800 | 75222222.220 | 105.244 | -4.128 |
| 45 | BIIB | BIOGEN IDEC Inc. | Health Care | Biotechnology | 306.350 | 4.918 | 1.826 | 38 | 133 | 148900000 | 3547000000 | 15.380 | 230624187.300 | 19.919 | 0.163 |
| 51 | BXP | Boston Properties | Real Estate | REITs | 127.540 | 7.203 | 1.089 | 10 | 47 | -1039361000 | 583106000 | 3.790 | 153853825.900 | 33.652 | -1.269 |
| 54 | CB | Chubb Limited | Financials | Property & Casualty Insurance | 116.850 | 13.194 | 0.945 | 10 | 99 | 1120000000 | 2834000000 | 8.710 | 325373134.300 | 13.416 | -17.466 |
| 58 | CELG | Celgene Corp. | Health Care | Biotechnology | 119.760 | 8.449 | 2.001 | 27 | 333 | 758700000 | 1602000000 | 2.020 | 793069306.900 | 59.287 | -4.320 |
| 64 | CHTR | Charter Communications | Consumer Discretionary | Cable & Satellite | 183.100 | 3.599 | 1.698 | 589 | 0 | 2000000 | -271000000 | -2.430 | 111522633.700 | 20.820 | -76.119 |
| 65 | CI | CIGNA Corp. | Health Care | Managed Health Care | 146.330 | 8.682 | 1.588 | 17 | 70 | 548000000 | 2094000000 | 8.170 | 256303549.600 | 17.911 | -8.805 |
| 70 | CMG | Chipotle Mexican Grill | Consumer Discretionary | Restaurants | 479.850 | -33.131 | 2.474 | 22 | 237 | -171460000 | 475602000 | 15.300 | 31085098.040 | 31.363 | 17.201 |
| 77 | COO | The Cooper Companies | Health Care | Health Care Supplies | 134.200 | -9.672 | 1.555 | 8 | 3 | -8796000 | 203523000 | 1.790 | 140335195.500 | 33.994 | 0.855 |
| 82 | CVS | CVS Health | Consumer Staples | Drug Retail | 97.770 | 1.327 | 1.487 | 14 | 11 | -22000000 | 5237000000 | 4.660 | 1123819742.000 | 20.981 | -7.020 |
| 92 | DIS | The Walt Disney Company | Consumer Discretionary | Broadcasting & Cable TV | 105.080 | 2.049 | 1.188 | 19 | 26 | 848000000 | 8382000000 | 4.950 | 1693333333.000 | 21.228 | -3.985 |
| 97 | DNB | Dun & Bradstreet | Industrials | Research & Consulting Services | 103.930 | -1.188 | 1.338 | 15 | 38 | 46300000 | 168800000 | 4.680 | 36068376.070 | 22.207 | -11.877 |
| 99 | DPS | Dr Pepper Snapple Group | Consumer Staples | Soft Drinks | 93.200 | 18.049 | 1.151 | 35 | 58 | 683000000 | 764000000 | 4.000 | 191000000.000 | 23.300 | -12.717 |
| 104 | ECL | Ecolab Inc. | Materials | Specialty Chemicals | 114.380 | 3.784 | 1.079 | 15 | 2 | -116800000 | 1002100000 | 3.380 | 296479289.900 | 33.840 | -14.929 |
| 106 | EFX | Equifax Inc. | Industrials | Research & Consulting Services | 111.370 | 14.531 | 1.081 | 19 | 15 | -35000000 | 429100000 | 3.610 | 118864265.900 | 30.850 | -8.117 |
| 110 | EQIX | Equinix | Real Estate | REITs | 302.400 | 10.020 | 1.308 | 7 | 164 | 1617921000 | 187774000 | 3.250 | 57776615.380 | 93.046 | 23.857 |
| 114 | ESS | Essex Property Trust, Inc. | Real Estate | Residential REITs | 239.410 | 6.765 | 1.118 | 4 | 47 | 4073000 | 232120000 | 3.500 | 66320000.000 | 68.403 | -3.089 |
| 121 | EXPE | Expedia Inc. | Consumer Discretionary | Internet & Direct Marketing Retail | 124.300 | 4.895 | 1.579 | 16 | 29 | 273599000 | 764465000 | 5.870 | 130232538.300 | 21.175 | -44.103 |
| 125 | FB | Information Technology | Internet Software & Services | 104.660 | 16.224 | 1.321 | 8 | 958 | 592000000 | 3669000000 | 1.310 | 2800763359.000 | 79.893 | 5.884 | |
| 135 | FRT | Federal Realty Investment Trust | Real Estate | Retail REITs | 146.100 | 6.806 | 1.240 | 13 | 47 | -26905000 | 210219000 | 3.040 | 69150986.840 | 48.059 | -3.973 |
| 138 | GD | General Dynamics | Industrials | Aerospace & Defense | 137.360 | -0.464 | 0.940 | 28 | 22 | -1603000000 | 2965000000 | 9.230 | 321235102.900 | 14.882 | 4.243 |
| 140 | GILD | Gilead Sciences | Health Care | Biotechnology | 101.190 | 2.689 | 1.494 | 98 | 148 | 2824000000 | 18108000000 | 12.370 | 1463864188.000 | 8.180 | 3.159 |
| 146 | GWW | Grainger (W.W.) Inc. | Industrials | Industrial Materials | 202.590 | -5.336 | 1.349 | 34 | 16 | 63492000 | 768996000 | 11.690 | 65782378.100 | 17.330 | 12.113 |
| 156 | HON | Honeywell Int'l Inc. | Industrials | Industrial Conglomerates | 103.570 | 9.320 | 1.103 | 26 | 41 | -1504000000 | 4768000000 | 6.110 | 780360065.500 | 16.951 | -3.710 |
| 160 | HSIC | Henry Schein | Health Care | Health Care Distributors | 158.190 | 18.317 | 1.014 | 17 | 3 | -17388000 | 479058000 | 5.780 | 82882006.920 | 27.369 | 5.926 |
| 163 | HUM | Humana Inc. | Health Care | Managed Health Care | 178.510 | -0.145 | 1.615 | 12 | 70 | 636000000 | 1276000000 | 8.540 | 149414519.900 | 20.903 | -8.805 |
| 164 | IBM | International Business Machines | Information Technology | IT Consulting & Other Services | 137.620 | -5.292 | 1.083 | 92 | 24 | -790000000 | 13190000000 | 13.480 | 978486646.900 | 10.209 | 4.852 |
| 166 | IFF | Intl Flavors & Fragrances | Materials | Specialty Chemicals | 119.640 | 14.961 | 1.153 | 26 | 25 | -296585000 | 419247000 | 5.190 | 80779768.790 | 23.052 | 5.048 |
| 171 | ISRG | Intuitive Surgical Inc. | Health Care | Health Care Equipment | 546.160 | 18.733 | 1.126 | 14 | 317 | 114300000 | 588800000 | 15.870 | 37101449.280 | 34.415 | 42.608 |
| 179 | KMB | Kimberly-Clark | Consumer Staples | Household Products | 127.300 | 17.511 | 0.870 | 582 | 10 | -170000000 | 1013000000 | 2.780 | 364388489.200 | 45.791 | -2.533 |
| 185 | LH | Laboratory Corp. of America Holding | Health Care | Health Care Facilities | 123.640 | 14.175 | 1.603 | 9 | 42 | 136400000 | 436900000 | 5.030 | 178246546.300 | 15.901 | -1.295 |
| 187 | LLL | L-3 Communications Holdings | Industrials | Industrial Conglomerates | 119.510 | 14.539 | 1.513 | 6 | 7 | -235000000 | -240000000 | -2.970 | 80808080.810 | 17.335 | 14.281 |
| 189 | LMT | Lockheed Martin Corp. | Industrials | Aerospace & Defense | 217.150 | 5.254 | 0.903 | 116 | 8 | -356000000 | 3605000000 | 11.620 | 310240963.900 | 18.688 | -10.853 |
| 195 | MA | Mastercard Inc. | Information Technology | Internet Software & Services | 97.360 | 7.497 | 1.096 | 63 | 130 | 610000000 | 3808000000 | 3.360 | 1133333333.000 | 28.976 | 3.452 |
| 201 | MCD | McDonald's Corp. | Consumer Discretionary | Restaurants | 118.140 | 19.939 | 0.733 | 64 | 260 | 5607600000 | 4529300000 | 4.820 | 939688796.700 | 24.510 | 7.122 |
| 202 | MCO | Moody's Corp | Financials | Diversified Financial Services | 100.340 | 2.346 | 1.269 | 167 | 183 | 537900000 | 941300000 | 4.700 | 200276595.700 | 21.349 | 8.616 |
| 205 | MHK | Mohawk Industries | Consumer Discretionary | Home Furnishings | 189.390 | 3.514 | 1.492 | 13 | 3 | -16185000 | 615302000 | 2.590 | 237568339.800 | 73.124 | -3.980 |
| 208 | MLM | Martin Marietta Materials | Materials | Construction Materials | 136.580 | -10.866 | 2.164 | 7 | 46 | 59758000 | 288792000 | 4.310 | 67005104.410 | 31.689 | 3.051 |
| 210 | MMM | 3M Company | Industrials | Industrial Conglomerates | 150.640 | 5.928 | 0.983 | 42 | 27 | -99000000 | 4833000000 | 7.720 | 626036269.400 | 19.513 | 2.024 |
| 217 | MTB | M&T Bank Corp. | Financials | Banks | 121.180 | -0.362 | 1.380 | 7 | 99 | -5317000 | 1079667000 | 7.220 | 149538365.700 | 16.784 | -0.938 |
| 218 | MTD | Mettler Toledo | Health Care | Life Sciences Tools & Services | 339.130 | 18.943 | 1.115 | 61 | 18 | 13624000 | 352820000 | 12.750 | 27672156.860 | 26.598 | 4.404 |
| 224 | NEE | NextEra Energy | Utilities | MultiUtilities | 103.890 | 6.238 | 1.023 | 12 | 6 | -6000000 | 2752000000 | 6.110 | 450409165.300 | 17.003 | -7.353 |
| 226 | NFLX | Netflix Inc. | Information Technology | Internet Software & Services | 114.380 | 11.146 | 2.606 | 6 | 65 | 695722000 | 122641000 | 0.290 | 422900000.000 | 394.414 | -5.700 |
| 237 | ORLY | O'Reilly Automotive | Consumer Discretionary | Specialty Stores | 253.420 | 0.964 | 1.089 | 47 | 4 | -134259000 | 931216000 | 9.320 | 99915879.830 | 27.191 | -0.364 |
| 243 | PCLN | Priceline.com Inc | Consumer Discretionary | Internet & Direct Marketing Retail | 1274.950 | 3.191 | 1.268 | 29 | 184 | -1671386000 | 2551360000 | 50.090 | 50935516.070 | 25.453 | -1.052 |
| 245 | PEP | PepsiCo Inc. | Consumer Staples | Soft Drinks | 99.920 | 6.072 | 0.805 | 45 | 68 | 2962000000 | 5452000000 | 3.710 | 1469541779.000 | 26.933 | -5.191 |
| 252 | PNC | PNC Financial Services | Financials | Banks | 95.310 | 6.994 | 1.121 | 9 | 99 | -295000000 | 4106000000 | 7.520 | 546010638.300 | 12.674 | -0.694 |
| 255 | PPG | PPG Industries | Materials | Diversified Chemicals | 98.820 | 19.161 | 1.533 | 28 | 31 | 625000000 | 1406000000 | 5.180 | 271428571.400 | 19.077 | -0.593 |
| 260 | PX | Praxair Inc. | Materials | Industrial Gases | 102.400 | 0.294 | 1.131 | 35 | 8 | 21000000 | 1547000000 | 5.390 | 287012987.000 | 18.998 | 0.575 |
| 263 | RCL | Royal Caribbean Cruises Ltd | Consumer Discretionary | Hotels, Resorts & Cruise Lines | 101.210 | 13.426 | 1.557 | 8 | 9 | -67676000 | 665783000 | 3.030 | 219730363.000 | 33.403 | -15.727 |
| 264 | REGN | Regeneron | Health Care | Biotechnology | 542.870 | 16.995 | 1.802 | 17 | 129 | 160383000 | 636056000 | 6.170 | 103088492.700 | 87.985 | 20.409 |
| 266 | ROP | Roper Industries | Industrials | Industrial Conglomerates | 189.790 | 20.433 | 1.059 | 13 | 108 | 168081000 | 696067000 | 6.920 | 100587716.800 | 27.426 | -16.215 |
| 273 | SHW | Sherwin-Williams | Materials | Specialty Chemicals | 259.600 | 16.538 | 1.426 | 121 | 10 | 165012000 | 1053849000 | 11.380 | 92605360.280 | 22.812 | 2.825 |
| 274 | SLG | SL Green Realty | Real Estate | Office REITs | 112.980 | 4.004 | 1.092 | 4 | 47 | -26010000 | 284084000 | 1.020 | 278513725.500 | 110.765 | -3.089 |
| 277 | SPG | Simon Property Group Inc | Real Estate | REITs | 194.440 | 5.285 | 1.136 | 48 | 47 | 88852000 | 2139375000 | 5.880 | 363839285.700 | 33.068 | -1.269 |
| 278 | SPGI | S&P Global, Inc. | Financials | Diversified Financial Services | 98.580 | 14.044 | 1.081 | 596 | 51 | -1016000000 | 1156000000 | 4.260 | 271361502.300 | 23.141 | -4.179 |
| 279 | SRCL | Stericycle Inc | Industrials | Industrial Conglomerates | 120.600 | -13.906 | 1.204 | 10 | 9 | 33398000 | 267046000 | 3.020 | 88425827.810 | 39.934 | -18.864 |
| 280 | SRE | Sempra Energy | Utilities | MultiUtilities | 94.010 | -2.792 | 1.126 | 11 | 9 | -167000000 | 1350000000 | 5.430 | 248618784.500 | 17.313 | -8.547 |
| 286 | SYK | Stryker Corp. | Health Care | Health Care Equipment | 92.940 | -1.651 | 1.138 | 17 | 116 | 1584000000 | 1439000000 | 3.820 | 376701570.700 | 24.330 | 7.027 |
| 288 | TAP | Molson Coors Brewing Company | Consumer Staples | Brewers | 93.920 | 13.129 | 1.218 | 5 | 35 | -150300000 | 359500000 | 1.940 | 185309278.400 | 48.412 | -25.385 |
| 292 | TMO | Thermo Fisher Scientific | Health Care | Health Care Equipment | 141.850 | 15.607 | 1.248 | 9 | 11 | -891400000 | 1975400000 | 4.960 | 398266129.000 | 28.599 | -28.033 |
| 294 | TRV | The Travelers Companies Inc. | Financials | Property & Casualty Insurance | 112.860 | 13.030 | 0.959 | 15 | 99 | 6000000 | 3439000000 | 10.990 | 312920837.100 | 10.269 | -0.892 |
| 297 | TSO | Tesoro Petroleum Co. | Energy | Oil & Gas Refining & Marketing & Transportation | 105.370 | 8.584 | 1.854 | 30 | 37 | -58000000 | 1540000000 | 12.500 | 123200000.000 | 8.430 | 4.594 |
| 303 | UHS | Universal Health Services, Inc. | Health Care | Health Care Facilities | 119.490 | -5.137 | 2.049 | 16 | 6 | 29159000 | 680528000 | 6.890 | 98770391.870 | 17.343 | 6.256 |
| 304 | UNH | United Health Group Inc. | Health Care | Managed Health Care | 117.640 | 1.466 | 1.482 | 17 | 70 | 3428000000 | 5813000000 | 6.100 | 952950819.700 | 19.285 | -8.805 |
| 307 | UPS | United Parcel Service | Industrials | Air Freight & Logistics | 96.230 | -2.798 | 0.826 | 196 | 44 | 439000000 | 4844000000 | 5.380 | 900371747.200 | 17.887 | 1.070 |
| 308 | UTX | United Technologies | Industrials | Industrial Conglomerates | 96.070 | 8.065 | 0.949 | 28 | 31 | 1630000000 | 7608000000 | 8.720 | 872477064.200 | 11.017 | -13.198 |
| 311 | VMC | Vulcan Materials | Materials | Construction Materials | 94.970 | 6.029 | 1.846 | 5 | 81 | 142787000 | 221177000 | 1.660 | 133239156.600 | 57.211 | -0.266 |
| 312 | VNO | Vornado Realty Trust | Real Estate | REITs | 99.960 | 10.028 | 1.020 | 11 | 47 | 637230000 | 760434000 | 3.610 | 210646537.400 | 27.690 | -1.082 |
| 315 | VRTX | Vertex Pharmaceuticals Inc | Health Care | Biotechnology | 125.830 | 21.928 | 2.457 | 59 | 221 | 89509000 | -556334000 | -2.310 | 240837229.400 | 39.603 | 2.560 |
| 318 | WAT | Waters Corporation | Health Care | Health Care Distributors | 134.580 | 13.925 | 1.045 | 23 | 425 | 65488000 | 469053000 | 5.700 | 82290000.000 | 23.611 | 29.547 |
| 321 | WHR | Whirlpool Corp. | Consumer Discretionary | Household Appliances | 146.870 | -0.231 | 2.398 | 17 | 10 | -254000000 | 783000000 | 9.950 | 78693467.340 | 14.761 | -45.086 |
| 337 | ZBH | Zimmer Biomet Holdings | Health Care | Health Care Equipment | 102.590 | 9.348 | 1.404 | 1 | 100 | 376000000 | 147000000 | 0.780 | 188461538.500 | 131.526 | -23.884 |
#cantidad de empresas que con Current Price mayores a P75
mayor_P75.shape[0]
85
display(mayor_P75.describe().T)
display(mayor_P75.describe(include = 'object').T)
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| Current Price | 85.000 | 173.947 | 160.154 | 92.940 | 103.570 | 123.640 | 178.510 | 1274.950 |
| Price Change | 85.000 | 7.106 | 9.576 | -33.131 | 1.466 | 6.806 | 14.044 | 32.268 |
| Volatility | 85.000 | 1.366 | 0.403 | 0.733 | 1.092 | 1.240 | 1.555 | 2.606 |
| ROE | 85.000 | 48.435 | 109.447 | 1.000 | 10.000 | 17.000 | 34.000 | 596.000 |
| Cash Ratio | 85.000 | 87.200 | 129.251 | 0.000 | 18.000 | 47.000 | 99.000 | 958.000 |
| Net Cash Flow | 85.000 | 239694658.824 | 997250305.573 | -1671386000.000 | -108953000.000 | 21000000.000 | 413000000.000 | 5607600000.000 |
| Net Income | 85.000 | 2049712058.824 | 2883903616.727 | -556334000.000 | 469053000.000 | 931216000.000 | 2752000000.000 | 18108000000.000 |
| Earnings Per Share | 85.000 | 6.245 | 6.249 | -2.970 | 3.040 | 5.190 | 8.600 | 50.090 |
| Estimated Shares Outstanding | 85.000 | 380542422.439 | 451340283.611 | 27672156.860 | 99915879.830 | 219730363.000 | 450409165.300 | 2800763359.000 |
| P/E Ratio | 85.000 | 45.225 | 75.064 | 8.180 | 17.887 | 23.611 | 33.994 | 528.039 |
| P/B Ratio | 85.000 | -2.025 | 21.651 | -76.119 | -8.805 | -1.269 | 4.200 | 129.065 |
| count | unique | top | freq | |
|---|---|---|---|---|
| Ticker Symbol | 85 | 85 | ADBE | 1 |
| Security | 85 | 85 | Adobe Systems Inc | 1 |
| GICS Sector | 85 | 10 | Health Care | 22 |
| GICS Sub Industry | 85 | 44 | Biotechnology | 7 |
2. ¿Las acciones de qué sector económico han visto el máximo aumento de precio en promedio?
# Distribución de los precios de las acciones?**
histogram_boxplot(data, "Price Change", figsize=(8, 8), kde=False, bins=None)
data["Price Change"].describe()
count 340.000 mean 4.078 std 12.006 min -47.130 25% -0.939 50% 4.820 75% 10.695 max 55.052 Name: Price Change, dtype: float64
La distribución del cambio porcentual de las acciones es asimétrica, "Price Change" con una cola larga en el lado derecho.La media y la mediana están cerca.
La media del cambio porcentual es de 4,078%, lo que significa que, en promedio, las acciones han subido un 4,078%. La desviación estándar del cambio porcentual es de 12,006%, lo que significa que, en promedio, las acciones están a 12,006% de la media.
Esto significa que hay un mayor número de acciones que han subido de precio que de acciones que han bajado de precio.
El valor mínimo del cambio porcentual es de -47,130%, lo que significa que hay algunas acciones que han bajado mucho de precio. El 25% de las acciones han subido menos del 0,939%, el 50% de las acciones han subido un 4,820% y el 75% de las acciones han subido un 10,695%. El valor máximo del cambio porcentual es de 55,052%, lo que significa que hay algunas acciones que han subido mucho de precio, importante tener en cuenta que esto puede ser un evento raro y debe contemplarse.
#Crear dataframe con features especificas
filtered1 = data[["Security", "GICS Sector", "GICS Sub Industry", "Current Price", "Price Change"]]
# Ordenar el data frame de mayor a menor según el Price Change
mayores = filtered1.sort_values(by="Price Change", ascending=False)
mayores
| Security | GICS Sector | GICS Sub Industry | Current Price | Price Change | |
|---|---|---|---|---|---|
| 136 | First Solar Inc | Information Technology | Semiconductors | 65.990 | 55.052 |
| 87 | Du Pont (E.I.) | Materials | Diversified Chemicals | 66.600 | 37.490 |
| 293 | TripAdvisor | Consumer Discretionary | Internet & Direct Marketing Retail | 85.250 | 34.804 |
| 220 | Mylan N.V. | Health Care | Pharmaceuticals | 54.070 | 33.177 |
| 26 | Amazon.com Inc | Consumer Discretionary | Internet & Direct Marketing Retail | 675.890 | 32.268 |
| ... | ... | ... | ... | ... | ... |
| 127 | Freeport-McMoran Cp & Gld | Materials | Copper | 6.770 | -31.685 |
| 70 | Chipotle Mexican Grill | Consumer Discretionary | Restaurants | 479.850 | -33.131 |
| 62 | Chesapeake Energy | Energy | Integrated Oil & Gas | 4.500 | -38.102 |
| 284 | Southwestern Energy | Energy | Oil & Gas Exploration & Production | 7.110 | -44.798 |
| 180 | Kinder Morgan | Energy | Oil & Gas Refining & Marketing & Transportation | 14.920 | -47.130 |
340 rows × 5 columns
# Filtrar los datos para que solo incluyan las filas con un cambio de precio positivo (85 mejores empresas)
P85_75 = data["Price Change"].quantile(0.75)
dmayorPC = data[data["Price Change"] > P85_75]
# Agrupar los datos por sector económico mostrando ls media del cambio porcentual de las acciones
grouped_dm = dmayorPC.groupby("GICS Sector")["Price Change"].mean().reset_index().sort_values("Price Change", ascending=False)
grouped_dm
| GICS Sector | Price Change | |
|---|---|---|
| 9 | Telecommunications Services | 24.708 |
| 0 | Consumer Discretionary | 20.620 |
| 6 | Information Technology | 20.538 |
| 7 | Materials | 19.635 |
| 4 | Health Care | 17.637 |
| 1 | Consumer Staples | 17.045 |
| 8 | Real Estate | 14.748 |
| 5 | Industrials | 13.544 |
| 3 | Financials | 13.393 |
| 2 | Energy | 13.273 |
# gráfico de barras para las 85 mejores empresas
plt.figure(figsize=(15,8))
sns.barplot(data=grouped_dm, x= "GICS Sector", y="Price Change", ci=False)
plt.xticks(rotation=90)
plt.show()
En general, de las 85 empresas que han experimentado el mayor cambio promedio, en el valor de sus acciones:
# Agrupar los datos por sector económico ordenado por la media del cambio porcentual de las acciones -todas 340 empresas
grouped_dmt = data.groupby("GICS Sector")["Price Change"].mean().reset_index().sort_values("Price Change", ascending=False)
grouped_dmt
| GICS Sector | Price Change | |
|---|---|---|
| 4 | Health Care | 9.586 |
| 1 | Consumer Staples | 8.685 |
| 6 | Information Technology | 7.217 |
| 9 | Telecommunications Services | 6.957 |
| 8 | Real Estate | 6.206 |
| 0 | Consumer Discretionary | 5.846 |
| 7 | Materials | 5.590 |
| 3 | Financials | 3.865 |
| 5 | Industrials | 2.833 |
| 10 | Utilities | 0.804 |
| 2 | Energy | -10.228 |
# gráfico de barras 340 empresas
plt.figure(figsize=(15,8))
sns.barplot(data=grouped_dmt, x= "GICS Sector", y="Price Change", ci=False)
plt.xticks(rotation=90)
plt.show()
Observaciones: En general, de las 340 empresas:
Ahora, considerando a las 85 empresas que sobresalen del P75, que han experimentado el mayor cremiento de sus acciones en promedio, Telecommunications Services ha tenido el mayor crecimiento 24.71%
La empresa que experimentó el mayor alza en el aumento de precio de sus acciones es First Solar Inc, del sector económico de la Information Technology, en la sub industria de los Semiconductors. Experimentó un credimiento de 55.052%
3. ¿Cómo se correlacionan las diferentes variables entre sí?
# correlación de variables
plt.figure(figsize=(20, 20))
sns.heatmap(data.corr(), annot=True, vmin=-1, vmax=1, fmt=".2f", cmap="Spectral")
plt.show()
Observaciones:
La mayor correlación positiva se da entre estas características:
La mayor correlación negativa se da entre estas características:
No hay una correlación alta entre variables, no obstante de las caracteristicas que presentaron la mayores correlaciones hay algunas observaciones que podrían tener explicaciones lógicas basadas en las relaciones financieras comunes.
Correlaciones Positivas:
Current Price con Earnings per Share (EPS): Es probable que el precio de las acciones esté positivamente correlacionado con las ganancias por acción. Los inversores suelen estar dispuestos a pagar más por acciones de empresas que generan mayores ganancias por cada acción.
Net Income con Earnings per Share (EPS): La correlación positiva entre el ingreso neto y las ganancias por acción también es lógica, ya que las ganancias por acción se calculan utilizando el ingreso neto y el número de acciones en circulación.
Net Income con Estimated Shares Outstanding: Similar a la correlación anterior, ya que el ingreso neto está directamente relacionado con las ganancias por acción y el número de acciones en circulación.
Correlaciones Negativas:
ROE con Earnings per Share (EPS): La correlación negativa podría sugerir que a medida que el ROE ( ingresos netos por el patrimonio de los accionistas) disminuye, las ganancias por acción tienden a disminuir. Esto podría indicar un rendimiento financiero inferior en relación con el capital propio.
Volatility con Price Change y Earnings per Share (EPS): Las correlaciones negativas con la volatilidad podrían indicar que las acciones de empresas menos volátiles tienen cambios de precio más estables y, por lo tanto, podrían tener una correlación negativa con cambios en las ganancias por acción.
4. El índice de efectivo proporciona una medida de la capacidad de una empresa para cubrir sus obligaciones a corto plazo utilizando solo efectivo y equivalentes de efectivo. ¿Cómo varía la razón de efectivo promedio entre los sectores económicos?
Cash Ratio (Ratio de Efectivo): La relación entre las reservas totales de efectivo y equivalentes de efectivo de una empresa y sus pasivos corrientes totales. Conocido como el índice de efectivo, que es una medida de la capacidad de una empresa para cubrir sus obligaciones a corto plazo utilizando solo efectivo y equivalentes de efectivo.
Se obtiene de la relación entre las reservas totales de efectivo y equivalentes de efectivo de una empresa y sus pasivos corrientes totales.
# Agrupar los datos por sector económico ordenado por la media del "Cash Ratio" -todas 340 empresas
in_efectivoprom = data.groupby("GICS Sector")["Cash Ratio"].mean().reset_index().sort_values("Cash Ratio", ascending=False)
in_efectivoprom
| GICS Sector | Cash Ratio | |
|---|---|---|
| 6 | Information Technology | 149.818 |
| 9 | Telecommunications Services | 117.000 |
| 4 | Health Care | 103.775 |
| 3 | Financials | 98.592 |
| 1 | Consumer Staples | 70.947 |
| 2 | Energy | 51.133 |
| 8 | Real Estate | 50.111 |
| 0 | Consumer Discretionary | 49.575 |
| 7 | Materials | 41.700 |
| 5 | Industrials | 36.189 |
| 10 | Utilities | 13.625 |
#Diagrama de caja para Cash Ratio promedio por sector económico
plt.figure(figsize=(15,5))
plt.xticks(rotation=90)
sns.boxplot( x=data['GICS Sector'],y=data['Cash Ratio'])
plt.show()
Sectores con mayor capacidad ó razón de efectivo promedio:
Sectores con capacidad razonable a moderada (razón de efectivo promedio):
Sectores con la menor capacidad para enfrentar obligaciones financieras a corto plazo (razón de efectivo promedio):
5. Las relaciones P/E pueden ayudar a determinar el valor relativo de las acciones de una empresa, ya que representan la cantidad de dinero que un inversionista está dispuesto a invertir en una sola acción de una empresa por cada dólar de sus ganancias. ¿Cómo varía la relación P/E, en promedio, entre sectores económicos?
P/E Ratio: relación entre el precio actual de las acciones de la empresa y las ganancias por acción.
Un P/E Ratio más alto puede indicar que los inversores están dispuestos a pagar más por cada dólar de ganancias de la empresa. Esto puede sugerir expectativas optimistas sobre el crecimiento futuro de las ganancias.
Un P/E Ratio más bajo puede indicar que las acciones de la empresa están menos valoradas en relación con sus ganancias.
# Agrupar los datos por sector económico ordenado por la media del "Cash Ratio" -todas 340 empresas
PE_ratioprom = data.groupby("GICS Sector")["P/E Ratio"].mean().reset_index().sort_values("P/E Ratio", ascending=False)
PE_ratioprom
| GICS Sector | P/E Ratio | |
|---|---|---|
| 2 | Energy | 72.898 |
| 6 | Information Technology | 43.783 |
| 8 | Real Estate | 43.066 |
| 4 | Health Care | 41.135 |
| 0 | Consumer Discretionary | 35.212 |
| 1 | Consumer Staples | 25.521 |
| 7 | Materials | 24.585 |
| 10 | Utilities | 18.719 |
| 5 | Industrials | 18.259 |
| 3 | Financials | 16.023 |
| 9 | Telecommunications Services | 12.223 |
# P/E Ratio PROMEDIO de los sectores de la economía
plt.figure(figsize=(15,5))
sns.barplot(data=PE_ratioprom, x='GICS Sector', y='P/E Ratio', ci=False)
plt.xticks(rotation=90)
plt.show()
# Agrupar los datos por sector económico ordenado por la media del "Cash Ratio" -todas 340 empresas
VO_prom = data.groupby("GICS Sector")["Volatility"].mean().reset_index().sort_values("Volatility", ascending=False)
VO_prom
| GICS Sector | Volatility | |
|---|---|---|
| 2 | Energy | 2.569 |
| 7 | Materials | 1.817 |
| 6 | Information Technology | 1.660 |
| 0 | Consumer Discretionary | 1.595 |
| 4 | Health Care | 1.541 |
| 5 | Industrials | 1.417 |
| 9 | Telecommunications Services | 1.342 |
| 3 | Financials | 1.267 |
| 8 | Real Estate | 1.206 |
| 1 | Consumer Staples | 1.153 |
| 10 | Utilities | 1.118 |
#Diagrama de caja pra observar la variación de P/E Ratio de los sectores económicos
plt.figure(figsize=(15,15))
sns.boxplot(data=data, x='P/E Ratio', y='GICS Sector',showmeans=True, meanline=True)
plt.xticks(rotation=90)
plt.show()
-El sector de la Energía presenta el P/E Ratio promedio mayor (72.90)
Cómo varía la relación P/E, en promedio, entre sectores económicos:
En otros sectores, la media sale de la caja. Esto puede deberse a varias razones, entre ellas:
La distribución de precios de las acciones es muy desigual. En estos casos, un pequeño número de empresas tienen un precio de las acciones muy alto, lo que eleva la media.
El sector está experimentando un cambio significativo. Por ejemplo, el sector de las tecnologías de la información están experimentando un crecimiento acelerado, o Health Care, lo que está provocando que los precios de las acciones de las empresas de este sector aumenten rápidamente.
Energía (Energy): Tiene el P/E Ratio más alto (72.898), lo que indica que, en promedio, los inversores están dispuestos a pagar una prima relativamente alta por las ganancias de las empresas en este sector. Parece que aún hay expectativas optimistas de que las empresas del sector de energía tienen el potencial de generar mayores ganancias en el futuro. La media se encuentra dentro de la caja, indica que la distribución de precios de las acciones del sector energético es relativamente uniforme.
Tecnología de la Información (Information Technology): Tiene un P/E Ratio significativo (43.783), lo que sugiere que las acciones en este sector están valoradas a un nivel relativamente alto en relación con sus ganancias.
Bienes Raíces (Real Estate): Presenta un P/E Ratio de 43.066, similar al sector de tecnología. Las empresas de bienes raíces podrían estar bien valoradas en comparación con sus ganancias.
Cuidado de la Salud (Health Care): Con un P/E Ratio de 41.135, las acciones en el sector de salud también parecen estar bien valoradas por los inversores.
Consumo Discrecional (Consumer Discretionary): Tiene un P/E Ratio de 35.212, indicando que, en promedio, los inversores están dispuestos a pagar una prima razonable por las ganancias de las empresas en este sector.
Bienes de Consumo Básico (Consumer Staples): Presenta un P/E Ratio más bajo (25.521), lo que podría sugerir que las acciones en este sector están relativamente menos valoradas en comparación con sus ganancias.
Materiales (Materials): Muestra un P/E Ratio de 24.585, indicando que, en promedio, las acciones en este sector tienen un precio razonable en relación con sus ganancias.
Servicios Públicos (Utilities): Tiene el P/E Ratio más bajo (18.719), indicando que, en promedio, los inversores están dispuestos a pagar menos por las ganancias de las empresas en este sector.
Industriales (Industrials): Presenta un P/E Ratio de 18.259, indicando una valoración moderada.
Servicios Financieros (Financials): Tiene un P/E Ratio de 16.023, que es relativamente bajo en comparación con algunos otros sectores. Esto podría sugerir que las acciones en el sector financiero están menos valoradas.
Servicios de Telecomunicaciones (Telecommunications Services): Tiene el P/E Ratio más bajo (12.223), indicando que, en promedio, los inversores están dispuestos a pagar menos por las ganancias de las empresas en este sector.
#Data frame
selected_columns = ['Security', 'GICS Sector', 'GICS Sub Industry', 'Current Price', 'Price Change', 'Volatility',
'ROE', 'Cash Ratio', 'Net Cash Flow', 'Net Income', 'Earnings Per Share',
'Estimated Shares Outstanding', 'P/E Ratio', 'P/B Ratio']
nume_cols = data.select_dtypes(include=np.number).columns.tolist()
# Para el set de datos de entrenamiento
for feature in nume_cols:
histogram_boxplot(data, feature, figsize=(12, 7), kde=False, bins=None)
Current Price-Precio actual: La distribución del precio actual es casi simétrica, sin embargo presenta un sesgo a la derecha. El precio promedio es de 80,86 dólares, pero el precio mínimo es de 4,50 dólares y el precio máximo es de 1274,95 dólares. Presenta valores extremos. Price Change- Cambio de precio: La distribución del cambio de precio es asimétrica con una cola larga a la derecha. El cambio promedio de precio es de 4,078%, pero el cambio mínimo de precio es de -47,13% y el cambio máximo de precio es de 55,05%.
Volatilidad-Volatility: La distribución de la volatilidad es asimétrica, con una cola derecha. La media media de 1,526 y una mediana de 1.386. La volatilidad mínima es de 0,733 y la volatilidad máxima es de 4,580. Tiene una cola a la derecha y valores extremos alejados de la media.
ROE: La distribución del ROE es asimétrica con una cola larga a la derecha. El ROE promedio es de 39,597%, pero el ROE mínimo es de 1% y el ROE máximo es de 917%. Es una variable con alta desviación estándar (96.5)
Ratio de efectivo-Cash Ratio: La distribución del ratio de efectivo es asimétrica a la derecha, con una media de 70,024. El ratio de efectivo mínimo es de 0% y el ratio de efectivo máximo es de 958%. Un ratio de efectivo alto indica que la empresa tiene una buena capacidad de liquidez.El hecho de que el ratio de efectivo mínimo sea de 0% significa que hay empresas que no tienen efectivo disponible para cubrir sus gastos a corto plazo. Estas empresas pueden estar en riesgo de insolvencia si no pueden generar suficiente efectivo para pagar sus facturas.
Flujo de caja neto-Net Cash Flow: La distribución del flujo de caja neto tiene una distribución casi simétrica. El flujo de caja neto promedio es de 555,37 millones de dólares, pero el flujo de caja neto mínimo es de -1120,8 mil millones de dólares y el flujo de caja neto máximo es de 2076,4 mil millones de dólares. Hay presencia de valores extremos bajos y altos.
Ingresos netos-Net Income: La distribución de los ingresos netos es asimétrica, pero similar a una campana normal. Los ingresos netos promedio son de 14943,8 millones de dólares, pero los ingresos netos mínimos son de -2352,8 mil millones de dólares y los ingresos netos máximos son de 2444,2 mil millones de dólares. El hecho de que los ingresos netos mínimos sean de -2352,8 mil millones de dólares significa que hay empresas que están perdiendo mucho dinero. Estas empresas pueden estar en riesgo de insolvencia si no pueden generar suficientes ingresos para cubrir sus gastos.
Ganancias por acción-Earnings Per Share: La distribución de las ganancias por acción es asimétrica sesgado un poco a a la derecha. Las ganancias por acción promedio son de 2,777 dólares, pero las ganancias por acción mínimas son de -61,20 dólares(pérdidas) y las ganancias por acción máximas son de 50,09 dólares. Presenta alta cantidad de valores extremos en ambos sentidos.
Acciones en circulación estimadas- Estimated Shares Outstanding: La distribución de las acciones en circulación estimadas es asimétrica con una cola larga a la derecha. El número promedio de acciones en circulación estimadas es de 5770,3 millones, pero el número mínimo de acciones en circulación estimadas es de 276,7 millones y el número máximo de acciones en circulación estimadas es de 6159,3 mil millones.
Relación precio-beneficio- P/E Ratio: La distribución de la relación precio-beneficio es asimétrica con una cola larga a la derecha. La relación precio-beneficio promedio es de 32,613, pero la relación precio-beneficio mínima es de 2,935 y la relación precio-beneficio máxima es de 528,039. Esto significa que hay una mayor cantidad de empresas con una relación precio-beneficio alta que empresas con una relación precio-beneficio baja.
Relación precio-valor en libros-P/B Ratio: La distribución de la relación precio-valor en libros es asimétrica sesgada un poco a la derecha, tiene una distribución similar a una simétrica. La relación precio-valor en libros promedio es de -1,718, pero la relación precio-valor en libros mínima es de -76,119 y la relación precio-valor en libros máxima es de 129,065. Esto significa que hay una mayor cantidad de empresas con una relación precio-valor en libros alta que empresas con una relación precio-valor en libros baja. Presenta valores extremos a ambos lados.
#Diagrama de barras para las variables categróricas
labeled_barplot(data, "GICS Sector", perc=False, n=None)
labeled_barplot(data, "GICS Sub Industry", perc=False, n=None)
plt.figure(figsize=(100,50))
plt.show()
<Figure size 10000x5000 with 0 Axes>
plt.figure(figsize=(15, 7))
sns.heatmap(data.corr(), annot=True, vmin=-1, vmax=1, fmt=".2f", cmap="Spectral")
plt.show()
# Pairplot
sns.pairplot(data, diag_kind="kde")
plt.show()
-No se tienen valores Nulos que tratar.
# Detección de valores extremos -visualización en diagrama de caja
plt.figure(figsize=(15, 12))
numeric_columns = data.select_dtypes(include=np.number).columns.tolist()
for i, variable in enumerate(numeric_columns):
plt.subplot(3, 4, i + 1)
plt.boxplot(df[variable], whis=1.5)
plt.tight_layout()
plt.title(variable)
plt.show()
-Existen variables con valores extremos pero no se realizará ningún tratamiento de valores.
# Solo se usarán columnas numéricas, de forma que no se eliminarán variables categóricas
#Columnas numéricas
nume_col = ['Current Price', 'Price Change', 'Volatility',
'ROE', 'Cash Ratio', 'Net Cash Flow', 'Net Income', 'Earnings Per Share',
'Estimated Shares Outstanding', 'P/E Ratio', 'P/B Ratio']
data=df.copy()
#escalar los datos
# Scaling the data set before clustering
scaler = StandardScaler()
subset = data[nume_col].copy()
subset_scaled = scaler.fit_transform(subset)
#Crear un dataframe con data escalada
#Creating a dataframe from the scaled data
data_scaled = pd.DataFrame(subset_scaled, columns=subset.columns)
data_scaled
| Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | -0.393 | 0.494 | 0.273 | 0.990 | -0.211 | -0.339 | 1.554 | 1.309 | 0.108 | -0.652 | -0.507 |
| 1 | -0.221 | 0.355 | 1.137 | 0.938 | 0.077 | -0.002 | 0.928 | 0.057 | 1.250 | -0.312 | -0.504 |
| 2 | -0.367 | 0.602 | -0.427 | -0.193 | -0.033 | 0.454 | 0.744 | 0.025 | 1.098 | -0.392 | 0.095 |
| 3 | 0.134 | 0.826 | -0.285 | -0.317 | 1.218 | -0.152 | -0.220 | -0.231 | -0.092 | 0.947 | 0.424 |
| 4 | -0.261 | -0.493 | 0.296 | -0.266 | 2.237 | 0.134 | -0.203 | -0.375 | 1.978 | 3.293 | 0.199 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 335 | -0.486 | 0.902 | 0.540 | -0.255 | 4.308 | -0.560 | -1.488 | -1.127 | 0.429 | -0.082 | 0.572 |
| 336 | -0.290 | -1.066 | -0.080 | 1.062 | -0.477 | 0.053 | -0.051 | 0.029 | -0.168 | -0.337 | -0.152 |
| 337 | 0.222 | 0.440 | -0.206 | -0.400 | 0.332 | 0.165 | -0.342 | -0.304 | -0.460 | 2.234 | -1.589 |
| 338 | -0.547 | -0.437 | -0.098 | -0.369 | 0.321 | -0.051 | -0.301 | -0.240 | -0.378 | -0.223 | 0.119 |
| 339 | -0.336 | 1.051 | 0.143 | -0.079 | -0.056 | 0.111 | -0.294 | -0.319 | -0.093 | 0.855 | 0.247 |
340 rows × 11 columns
#Calculo de la distorsión promedio
# Elbow mehod para obtener k clusters apropiados de los datos
clusters = range(1, 12)
meanDistortions = []
for k in clusters:
model = KMeans(n_clusters=k)
model.fit(data_scaled)
prediction = model.predict(data_scaled)
# display(subset_scaled_df.head())
# print(model.cluster_centers_)
# print(cdist(subset_scaled_df, model.cluster_centers_, "euclidean"))
# print(np.min(cdist(subset_scaled_df, model.cluster_centers_, "euclidean"), axis = 1))
# print(sum(np.min(cdist(subset_scaled_df, model.cluster_centers_, "euclidean"), axis = 1)))
# print(subset_scaled_df.shape[0])
distortion = (
sum(
np.min(cdist(data_scaled, model.cluster_centers_, "euclidean"), axis=1)
)
/ data_scaled.shape[0]
)
meanDistortions.append(distortion)
print("Number of Clusters:", k, "\tAverage Distortion:", distortion)
print("*"*50)
plt.plot(clusters, meanDistortions, "bx-")
plt.xlabel("k")
plt.ylabel("Average Distortion")
plt.title("Selecting k with the Elbow Method", fontsize=20)
Number of Clusters: 1 Average Distortion: 2.5425069919221697 ************************************************** Number of Clusters: 2 Average Distortion: 2.382318498894466 ************************************************** Number of Clusters: 3 Average Distortion: 2.2692367155390745 ************************************************** Number of Clusters: 4 Average Distortion: 2.176396791566185 ************************************************** Number of Clusters: 5 Average Distortion: 2.108708268456352 ************************************************** Number of Clusters: 6 Average Distortion: 2.078458079329907 ************************************************** Number of Clusters: 7 Average Distortion: 2.0583926312496255 ************************************************** Number of Clusters: 8 Average Distortion: 1.9606302132649556 ************************************************** Number of Clusters: 9 Average Distortion: 1.8927973028542797 ************************************************** Number of Clusters: 10 Average Distortion: 1.8640513241964343 ************************************************** Number of Clusters: 11 Average Distortion: 1.794217808079478 **************************************************
Text(0.5, 1.0, 'Selecting k with the Elbow Method')
El gráfico muestra que la distorsión promedio disminuye bruscamente al pasar de 1 cluster a 2 clusters.
Luego, la distorsión continúa disminuyendo, pero a un ritmo más lento, a medida que aumenta el número de clusters. Luego se tiene una distorción importante entre 6 a 8 clusters.
Para elegir el número de clusters definitivo, se deberá revisar otros factores.
Observando el método de codo ("Selecting k with the Elbow Method"), el valor apropiado de k de la curva del codo es dificil de discernir, se podría decir que desde 2 ya empieza a variar.
sil_score = []
cluster_list = list(range(2,12))
for n_clusters in cluster_list:
clusterer = KMeans(n_clusters=n_clusters)
preds = clusterer.fit_predict((data_scaled))
# centers = clusterer.cluster_centers_
score = silhouette_score(data_scaled, preds)
sil_score.append(score)
print("For n_clusters = {}, silhouette score is {}".format(n_clusters, score))
plt.plot(cluster_list, sil_score)
For n_clusters = 2, silhouette score is 0.43969639509980457 For n_clusters = 3, silhouette score is 0.45494915445064904 For n_clusters = 4, silhouette score is 0.45434371948348606 For n_clusters = 5, silhouette score is 0.42375180665673834 For n_clusters = 6, silhouette score is 0.38817178229053784 For n_clusters = 7, silhouette score is 0.4416684377279727 For n_clusters = 8, silhouette score is 0.40462811671790133 For n_clusters = 9, silhouette score is 0.40644769535040703 For n_clusters = 10, silhouette score is 0.39564217627798975 For n_clusters = 11, silhouette score is 0.13241118102915095
[<matplotlib.lines.Line2D at 0x17bd78fb0d0>]
Se graficarán los grupos deacuerdo a los diferentes valores de k a probar.
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(11, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 11 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(8, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 8 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(7, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 7 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(4, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 4 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(3, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 3 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
# finding optimal no. of clusters with silhouette coefficients
visualizer = SilhouetteVisualizer(KMeans(2, random_state=1))
visualizer.fit(data_scaled)
visualizer.show()
<Axes: title={'center': 'Silhouette Plot of KMeans Clustering for 340 Samples in 2 Centers'}, xlabel='silhouette coefficient values', ylabel='cluster label'>
La distribución de los puntos de datos no parece ser tan buena en todos los casos.
En algunos casos, los puntos de datos están muy dispersos, lo que puede dificultar la interpretación de los clusters.
Se consideró 7 clusters, ó mas (11) considerando que de esta forma compartan media implicando que los puntos de datos de esos clusters tienen, en promedio, las mismas características.
Se buscó la homogeneidad dentro de los clusters, pero siempre hay un cluster dominante y el resto de clusteres parecen tener poca participación, de forma que considerando que en 2 existía también un cambio apbruto y que entre 3 y 4 se tiene el mejor coeficiente de silueta, se tomará 4 como el número adecuado de grupos.
Se decide escoger 3, aunque los clusters 1, 3 no tienen una distribución tan buena y además tienen un coeficiente de silueta mucho menor.
Esto podría deberse a la naturaleza de los datos poco homogeneos.
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(data_scaled)
KMeans(n_clusters=3, random_state=0)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
KMeans(n_clusters=3, random_state=0)
#Agregar labels a los data frames
#adding kmeans cluster labels to the original and normalize dataframe
data["K_means_segments"] = kmeans.labels_
data_scaled["K_means_segments"] = kmeans.labels_
cluster_profile = data.groupby("K_means_segments").mean()
cluster_profile["count_in_each_segment"] = (
data.groupby("K_means_segments")["GICS Sector"].count().values
)
#Perfiles del cluster max
# let's display cluster profiles
cluster_profile.style.highlight_max(color="lightgreen", axis=0)
| Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | count_in_each_segment | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| K_means_segments | ||||||||||||
| 0 | 84.250468 | 5.595187 | 1.402117 | 34.146758 | 66.815700 | 10741689.419795 | 1449597119.453925 | 3.902338 | 426357529.820239 | 24.416003 | -2.011211 | 293 |
| 1 | 52.142857 | 6.779993 | 1.175153 | 26.142857 | 140.142857 | 760285714.285714 | 13368785714.285715 | 3.769286 | 3838879870.871428 | 20.654832 | -3.529270 | 14 |
| 2 | 62.963940 | -10.537087 | 2.774534 | 93.696970 | 68.757576 | 154287151.515152 | -3145581545.454545 | -7.639091 | 530986678.995152 | 110.461063 | 1.651207 | 33 |
#Perfiles del cluster max
# let's display cluster profiles
cluster_profile.style.highlight_min(color="lightgreen", axis=0)
| Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | count_in_each_segment | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| K_means_segments | ||||||||||||
| 0 | 84.250468 | 5.595187 | 1.402117 | 34.146758 | 66.815700 | 10741689.419795 | 1449597119.453925 | 3.902338 | 426357529.820239 | 24.416003 | -2.011211 | 293 |
| 1 | 52.142857 | 6.779993 | 1.175153 | 26.142857 | 140.142857 | 760285714.285714 | 13368785714.285715 | 3.769286 | 3838879870.871428 | 20.654832 | -3.529270 | 14 |
| 2 | 62.963940 | -10.537087 | 2.774534 | 93.696970 | 68.757576 | 154287151.515152 | -3145581545.454545 | -7.639091 | 530986678.995152 | 110.461063 | 1.651207 | 33 |
plt.figure(figsize=(15, 20))
plt.suptitle("Boxplot of numerical variables for each cluster")
for i, variable in enumerate(nume_col):
plt.subplot(4, 3, i + 1)
sns.boxplot(data=data, x="K_means_segments", y=variable)
plt.tight_layout(pad=2.0)
data.groupby("K_means_segments").mean().plot.bar(figsize=(15, 6))
<Axes: xlabel='K_means_segments'>
data_scaled.groupby("K_means_segments").mean().plot.bar(figsize=(15, 6))
<Axes: xlabel='K_means_segments'>
Observaciones y posibles interpretaciones:
Clúster 0: Hay 293 empresas en este cluster
Precio: Alto ( el máximo ) Cambio de precio: Alto Volatilidad: Moderada ROE: Moderado Ratio de efectivo: Alto Flujo de efectivo neto: Alto Ingresos netos: Altos Ganancias por acción: Altas Acciones en circulación estimadas: Altas Relación P/E: Moderada Relación P/B: Moderada
Este clúster representa a empresas con valoraciones y rendimiento financiero que se podría decir promedio-alto, un sólido desempeño financiero y un alto potencial de crecimiento. Estas empresas pueden considerarse más estables y menos riesgosas que las de otros clústeres, pero también pueden ofrecer un potencial de crecimiento menor. Estas empresas son probables que sean atractivas para los inversores que buscan un crecimiento a largo plazo, sus indicadores sugieren que estas empresas están creciendo rápidamente y están generando una gran cantidad de flujo de efectivo. También es probable que sean atractivas para los inversores que buscan un crecimiento a largo plazo.
Cluster 1: Hay 14 empresas en este cluster.
Precio: Moderado Cambio de precio: Alto ( el máximo ) Volatilidad: Moderada ROE: Moderado Ratio de efectivo: Muy alto ( el máximo ) Flujo de efectivo neto: Muy alto ( el máximo ) Ingresos netos: Moderados-alto ( el máximo ) Ganancias por acción: Moderadas Acciones en circulación estimadas:Muy alto ( el máximo ) Relación P/E: Moderada Relación P/B: Moderada
Presenta caracteristicas positivas muy atractivas para inversores como: tiene el mayor Cash Ratio, Net Cash Flow y Estimated Shares Outstanding que sugiere, que estas empresas tienen una buena posición financiera.
Net Income alto es una característica positiva para una empresa. Indica que la empresa está generando una gran cantidad de ganancias. Esto puede deberse a una serie de factores, como un alto volumen de ventas, un margen de beneficio elevado o una combinación de ambos.
Un cash ratio alto indica que la empresa tiene una gran cantidad de efectivo en relación con sus obligaciones a corto plazo. Estas empresas tiene un colchón financiero que le permite hacer frente a sus deudas a corto plazo sin necesidad de recurrir a terceros.
Un Net Cash Flow alto indica que la empresa está generando un flujo de efectivo positivo. Esto significa que la empresa está generando más dinero del que está gastando.El Net Cash Flow puede ser estacional, se recomienda considerar los datos históricos para obtener una imagen más completa de la salud financiera de la empresa.
Un Estimated Shares Outstanding alto indica que la empresa tiene una gran cantidad de acciones en circulación.
Las empresas del Cluster 1 se caracterizan por tener valoraciones y un desempeño financiero promedio, pero con ratios de efectivo y flujos de efectivo netos muy altos. Estas empresas suelen tener precios moderados, cambios de precio positivos, volatilidad moderada, ROE moderado, ratios de efectivo muy altos, flujos de efectivo netos muy altos, ingresos netos moderados, ganancias por acción moderadas y estimaciones de acciones en circulación muy altas. Sus ratios P/E y P/B también son moderados. Estas características sugieren que estas empresas están generando una gran cantidad de flujo de efectivo, pero no están creciendo tan rápido como las empresas del Cluster 0. También pueden considerarse más estables y menos arriesgadas que las empresas del Cluster 0, pero también pueden ofrecer un menor potencial de crecimiento.Son atractivas por sus ratios de efectivo y flujos de efectivo netos muy altos.
Clúster 2 Hay 33 empresas en este grupo.
Precio: Moderado Cambio de precio: Negativo Volatilidad: Alta ROE: Alto Ratio de efectivo: Bajo Flujo de efectivo neto: Negativo Ingresos netos: Negativos Ganancias por acción: Negativas Acciones en circulación estimadas: Moderadas Relación P/E: Alta Relación P/B: Baja
Las empresas del Cluster 2 se caracterizan por tener valoraciones y un desempeño financiero promedio. Estas empresas presentan precios moderados, cambios de precio negativos, volatilidad alta, ROE alto, ratios de efectivo bajos, flujos de efectivo netos negativos, ingresos netos negativos, ganancias por acción negativas y estimaciones de acciones en circulación moderadas. Sus ratios P/E son altos y sus ratios P/B son bajos. Estas características sugieren que estas empresas no están creciendo y no están generando una gran cantidad de flujo de efectivo. También pueden considerarse más estables y menos arriesgadas que las empresas del Cluster 3, pero también pueden ofrecer un menor potencial de crecimiento.
NOTAPara trabajar con la agrupación jerarquica, y hacer comparación de ambos métodos, el set data debe resetearse al set original.
data=df.copy()
data
| Ticker Symbol | Security | GICS Sector | GICS Sub Industry | Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | AAL | American Airlines Group | Industrials | Airlines | 42.350 | 10.000 | 1.687 | 135 | 51 | -604000000 | 7610000000 | 11.390 | 668129938.500 | 3.718 | -8.784 |
| 1 | ABBV | AbbVie | Health Care | Pharmaceuticals | 59.240 | 8.339 | 2.198 | 130 | 77 | 51000000 | 5144000000 | 3.150 | 1633015873.000 | 18.806 | -8.750 |
| 2 | ABT | Abbott Laboratories | Health Care | Health Care Equipment | 44.910 | 11.301 | 1.274 | 21 | 67 | 938000000 | 4423000000 | 2.940 | 1504421769.000 | 15.276 | -0.394 |
| 3 | ADBE | Adobe Systems Inc | Information Technology | Application Software | 93.940 | 13.977 | 1.358 | 9 | 180 | -240840000 | 629551000 | 1.260 | 499643650.800 | 74.556 | 4.200 |
| 4 | ADI | Analog Devices, Inc. | Information Technology | Semiconductors | 55.320 | -1.828 | 1.701 | 14 | 272 | 315120000 | 696878000 | 0.310 | 2247993548.000 | 178.452 | 1.060 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 335 | YHOO | Yahoo Inc. | Information Technology | Internet Software & Services | 33.260 | 14.888 | 1.845 | 15 | 459 | -1032187000 | -4359082000 | -4.640 | 939457327.600 | 28.976 | 6.262 |
| 336 | YUM | Yum! Brands Inc | Consumer Discretionary | Restaurants | 52.516 | -8.699 | 1.479 | 142 | 27 | 159000000 | 1293000000 | 2.970 | 435353535.400 | 17.682 | -3.838 |
| 337 | ZBH | Zimmer Biomet Holdings | Health Care | Health Care Equipment | 102.590 | 9.348 | 1.404 | 1 | 100 | 376000000 | 147000000 | 0.780 | 188461538.500 | 131.526 | -23.884 |
| 338 | ZION | Zions Bancorp | Financials | Regional Banks | 27.300 | -1.159 | 1.468 | 4 | 99 | -43623000 | 309471000 | 1.200 | 257892500.000 | 22.750 | -0.063 |
| 339 | ZTS | Zoetis | Health Care | Pharmaceuticals | 47.920 | 16.679 | 1.610 | 32 | 65 | 272000000 | 339000000 | 0.680 | 498529411.800 | 70.471 | 1.723 |
340 rows × 15 columns
#data.drop(columns=["K_means_segments"], axis=1, inplace=True)
#Columnas numéricas
nume_col = ['Current Price', 'Price Change', 'Volatility',
'ROE', 'Cash Ratio', 'Net Cash Flow', 'Net Income', 'Earnings Per Share',
'Estimated Shares Outstanding', 'P/E Ratio', 'P/B Ratio']
subset = data[nume_col].copy()
sc = StandardScaler()
subset_scaled_df = pd.DataFrame(
sc.fit_transform(subset),
columns=subset.columns,
)
subset_scaled_df.head()
| Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | -0.393 | 0.494 | 0.273 | 0.990 | -0.211 | -0.339 | 1.554 | 1.309 | 0.108 | -0.652 | -0.507 |
| 1 | -0.221 | 0.355 | 1.137 | 0.938 | 0.077 | -0.002 | 0.928 | 0.057 | 1.250 | -0.312 | -0.504 |
| 2 | -0.367 | 0.602 | -0.427 | -0.193 | -0.033 | 0.454 | 0.744 | 0.025 | 1.098 | -0.392 | 0.095 |
| 3 | 0.134 | 0.826 | -0.285 | -0.317 | 1.218 | -0.152 | -0.220 | -0.231 | -0.092 | 0.947 | 0.424 |
| 4 | -0.261 | -0.493 | 0.296 | -0.266 | 2.237 | 0.134 | -0.203 | -0.375 | 1.978 | 3.293 | 0.199 |
#Calculo del coeficiente cofenético para las variables normalizadas para distintas distancias y enlaces
# list of distance metrics
distance_metrics = ["euclidean", "chebyshev", "mahalanobis", "cityblock"]
# list of linkage methods
linkage_methods = ["single", "complete", "average", "weighted"]
high_cophenet_corr = 0
high_dm_lm = [0, 0]
for dm in distance_metrics:
for lm in linkage_methods:
Z = linkage(subset_scaled_df, metric=dm, method=lm)
c, coph_dists = cophenet(Z, pdist(subset_scaled_df))
print(
"Cophenetic correlation for {} distance and {} linkage is {}.".format(
dm.capitalize(), lm, c
)
)
if high_cophenet_corr < c:
high_cophenet_corr = c
high_dm_lm[0] = dm
high_dm_lm[1] = lm
Cophenetic correlation for Euclidean distance and single linkage is 0.9232271494002922. Cophenetic correlation for Euclidean distance and complete linkage is 0.7873280186580672. Cophenetic correlation for Euclidean distance and average linkage is 0.9422540609560814. Cophenetic correlation for Euclidean distance and weighted linkage is 0.8693784298129404. Cophenetic correlation for Chebyshev distance and single linkage is 0.9062538164750717. Cophenetic correlation for Chebyshev distance and complete linkage is 0.598891419111242. Cophenetic correlation for Chebyshev distance and average linkage is 0.9338265528030499. Cophenetic correlation for Chebyshev distance and weighted linkage is 0.9127355892367. Cophenetic correlation for Mahalanobis distance and single linkage is 0.9259195530524589. Cophenetic correlation for Mahalanobis distance and complete linkage is 0.792530720285. Cophenetic correlation for Mahalanobis distance and average linkage is 0.9247324030159735. Cophenetic correlation for Mahalanobis distance and weighted linkage is 0.8708317490180427. Cophenetic correlation for Cityblock distance and single linkage is 0.9334186366528574. Cophenetic correlation for Cityblock distance and complete linkage is 0.7375328863205818. Cophenetic correlation for Cityblock distance and average linkage is 0.9302145048594667. Cophenetic correlation for Cityblock distance and weighted linkage is 0.731045513520281.
#imprime la combinación de distancia y enlace que obtiene la mayor correlación cofenética
# printing the combination of distance metric and linkage method with the highest cophenetic correlation
print('*'*100)
print(
"Highest cophenetic correlation is {}, which is obtained with {} distance and {} linkage.".format(
high_cophenet_corr, high_dm_lm[0].capitalize(), high_dm_lm[1]))
print(
"El mayor coeficiente cofenético es {}, se obtiene de {} distancia y {} enlace.".format(
high_cophenet_corr, high_dm_lm[0].capitalize(), high_dm_lm[1]
))
**************************************************************************************************** Highest cophenetic correlation is 0.9422540609560814, which is obtained with Euclidean distance and average linkage. El mayor coeficiente cofenético es 0.9422540609560814, se obtiene de Euclidean distancia y average enlace.
# list of linkage methods
linkage_methods = ["single", "complete", "average", "centroid", "ward", "weighted"]
high_cophenet_corr = 0
high_dm_lm = [0, 0]
for lm in linkage_methods:
Z = linkage(subset_scaled_df, metric="euclidean", method=lm)
c, coph_dists = cophenet(Z, pdist(subset_scaled_df))
print("Cophenetic correlation for {} linkage is {}.".format(lm, c))
if high_cophenet_corr < c:
high_cophenet_corr = c
high_dm_lm[0] = "euclidean"
high_dm_lm[1] = lm
Cophenetic correlation for single linkage is 0.9232271494002922. Cophenetic correlation for complete linkage is 0.7873280186580672. Cophenetic correlation for average linkage is 0.9422540609560814. Cophenetic correlation for centroid linkage is 0.9314012446828154. Cophenetic correlation for ward linkage is 0.7101180299865353. Cophenetic correlation for weighted linkage is 0.8693784298129404.
# printing the combination of distance metric and linkage method with the highest cophenetic correlation
print(
"Highest cophenetic correlation is {}, which is obtained with {} linkage.".format(
high_cophenet_corr, high_dm_lm[1]
)
)
Highest cophenetic correlation is 0.9422540609560814, which is obtained with average linkage.
Vemos que la correlación cofenética es máxima con la distancia euclidiana y el enlace average linkage.
También a correlación cofenética es alta con la distancia euclidiana y el enlace centroide linkage.
Veamos los dendrogramas para los diferentes métodos de vinculación.
# list of linkage methods
linkage_methods = ["single", "complete", "average", "centroid", "ward", "weighted"]
# lists to save results of cophenetic correlation calculation
compare_cols = ["Linkage", "Cophenetic Coefficient"]
# to create a subplot image
fig, axs = plt.subplots(len(linkage_methods), 1, figsize=(15, 30))
# We will enumerate through the list of linkage methods above
# For each linkage method, we will plot the dendrogram and calculate the cophenetic correlation
for i, method in enumerate(linkage_methods):
Z = linkage(subset_scaled_df, metric="euclidean", method=method)
dendrogram(Z, ax=axs[i])
axs[i].set_title(f"Dendrogram ({method.capitalize()} Linkage)")
coph_corr, coph_dist = cophenet(Z, pdist(subset_scaled_df))
axs[i].annotate(
f"Cophenetic\nCorrelation\n{coph_corr:0.2f}",
(0.80, 0.80),
xycoords="axes fraction",
)
- La correlación cofenética es más alta para los métodos de enlace promedio y centroide.
- Seguiremos adelante con la vinculación media,-enlace promedio.
- 6 parece ser el número apropiado de grupos del dendrograma de enlace promedio.
HCmodel = AgglomerativeClustering(n_clusters=6, affinity="euclidean", linkage="average")
HCmodel.fit(subset_scaled_df)
AgglomerativeClustering(affinity='euclidean', linkage='average', n_clusters=6)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
AgglomerativeClustering(affinity='euclidean', linkage='average', n_clusters=6)
subset_scaled_df["HC_Clusters"] = HCmodel.labels_
data["HC_Clusters"] = HCmodel.labels_
cluster_profile = data.groupby("HC_Clusters").mean()
cluster_profile["count_in_each_segments"] = (
data.groupby("HC_Clusters")["ROE"].count().values
)
#Sectores económicos en cluster
# let's see the names of the names of economic sector in each cluster
for cl in data["HC_Clusters"].unique():
print(" En cluster {}, los siguientes sectores económicos están presentes:".format(cl))
print(data[data["HC_Clusters"] == cl]["GICS Sector"].unique())
print()
En cluster 0, los siguientes sectores económicos están presentes: ['Industrials' 'Health Care' 'Information Technology' 'Consumer Staples' 'Utilities' 'Financials' 'Real Estate' 'Materials' 'Consumer Discretionary' 'Energy' 'Telecommunications Services'] En cluster 5, los siguientes sectores económicos están presentes: ['Information Technology'] En cluster 2, los siguientes sectores económicos están presentes: ['Energy'] En cluster 1, los siguientes sectores económicos están presentes: ['Financials' 'Information Technology'] En cluster 3, los siguientes sectores económicos están presentes: ['Information Technology'] En cluster 4, los siguientes sectores económicos están presentes: ['Consumer Discretionary']
#Clusters= 4 Ward
HCmodel = AgglomerativeClustering(n_clusters=4, affinity="euclidean", linkage="ward")
HCmodel.fit(subset_scaled_df)
AgglomerativeClustering(affinity='euclidean', n_clusters=4)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
AgglomerativeClustering(affinity='euclidean', n_clusters=4)
HCmodel = AgglomerativeClustering(n_clusters=4, affinity="euclidean", linkage="ward")
HCmodel.fit(subset_scaled_df)
AgglomerativeClustering(affinity='euclidean', n_clusters=4)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
AgglomerativeClustering(affinity='euclidean', n_clusters=4)
subset_scaled_df["HC_Clusters"] = HCmodel.labels_
data["HC_Clusters"] = HCmodel.labels_
cluster_profile = data.groupby("HC_Clusters").mean()
cluster_profile["count_in_each_segments"] = (
data.groupby("HC_Clusters")["GICS Sector"].count().values
)
# let's see the names of the countries in each cluster
for cl in data["HC_Clusters"].unique():
print(
"The",
data[data["HC_Clusters"] == cl]["GICS Sector"].nunique(),
"GICS Sector in cluster",
cl,
"are:",
)
print(data[data["HC_Clusters"] == cl]["GICS Sector"].unique())
print("-" * 100, "\n")
The 11 GICS Sector in cluster 3 are: ['Industrials' 'Health Care' 'Information Technology' 'Consumer Staples' 'Utilities' 'Financials' 'Real Estate' 'Materials' 'Consumer Discretionary' 'Telecommunications Services' 'Energy'] ---------------------------------------------------------------------------------------------------- The 8 GICS Sector in cluster 1 are: ['Information Technology' 'Health Care' 'Consumer Discretionary' 'Financials' 'Real Estate' 'Telecommunications Services' 'Consumer Staples' 'Materials'] ---------------------------------------------------------------------------------------------------- The 7 GICS Sector in cluster 0 are: ['Industrials' 'Energy' 'Consumer Discretionary' 'Consumer Staples' 'Materials' 'Financials' 'Information Technology'] ---------------------------------------------------------------------------------------------------- The 6 GICS Sector in cluster 2 are: ['Financials' 'Consumer Discretionary' 'Consumer Staples' 'Health Care' 'Telecommunications Services' 'Energy'] ----------------------------------------------------------------------------------------------------
# Number de sectorespor cluster
cluster_profile["count_in_each_segments"]
HC_Clusters 0 29 1 27 2 9 3 275 Name: count_in_each_segments, dtype: int64
#Perfil de cluster para valores máx
# lets display cluster profile
cluster_profile.style.highlight_max(color="lightgreen", axis=0)
| Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | count_in_each_segments | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| HC_Clusters | ||||||||||||
| 0 | 48.006208 | -11.263107 | 2.590247 | 196.551724 | 40.275862 | -495901724.137931 | -3597244655.172414 | -8.689655 | 486319827.294483 | 75.110924 | -2.162622 | 29 |
| 1 | 213.518640 | 15.252913 | 1.779861 | 22.333333 | 258.740741 | 1504052814.814815 | 1716529851.851852 | 5.177407 | 689838338.441482 | 78.441603 | 13.022590 | 27 |
| 2 | 46.672222 | 5.166566 | 1.079367 | 25.000000 | 58.333333 | -3040666666.666667 | 14848444444.444445 | 3.435556 | 4564959946.222222 | 15.596051 | -6.354193 | 9 |
| 3 | 72.421687 | 4.563230 | 1.403434 | 25.218182 | 55.014545 | 72801872.727273 | 1572467469.090909 | 3.728564 | 445003946.148764 | 24.188244 | -2.966949 | 275 |
#Perfil de cluster para valores min
# lets display cluster profile
cluster_profile.style.highlight_min(color="lightgreen", axis=0)
| Current Price | Price Change | Volatility | ROE | Cash Ratio | Net Cash Flow | Net Income | Earnings Per Share | Estimated Shares Outstanding | P/E Ratio | P/B Ratio | count_in_each_segments | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| HC_Clusters | ||||||||||||
| 0 | 48.006208 | -11.263107 | 2.590247 | 196.551724 | 40.275862 | -495901724.137931 | -3597244655.172414 | -8.689655 | 486319827.294483 | 75.110924 | -2.162622 | 29 |
| 1 | 213.518640 | 15.252913 | 1.779861 | 22.333333 | 258.740741 | 1504052814.814815 | 1716529851.851852 | 5.177407 | 689838338.441482 | 78.441603 | 13.022590 | 27 |
| 2 | 46.672222 | 5.166566 | 1.079367 | 25.000000 | 58.333333 | -3040666666.666667 | 14848444444.444445 | 3.435556 | 4564959946.222222 | 15.596051 | -6.354193 | 9 |
| 3 | 72.421687 | 4.563230 | 1.403434 | 25.218182 | 55.014545 | 72801872.727273 | 1572467469.090909 | 3.728564 | 445003946.148764 | 24.188244 | -2.966949 | 275 |
# Variación de la data filtrada por clusters
plt.figure(figsize=(20, 35))
plt.suptitle("Boxplot of scaled numerical variables for each cluster", fontsize=20)
for i, variable in enumerate(nume_cols):
plt.subplot(5, 3, i + 1)
sns.boxplot(data=subset_scaled_df, x="HC_Clusters", y=variable)
plt.tight_layout(pad=2.0)
#Variación de la data original por clusters
plt.figure(figsize=(20, 35))
plt.suptitle("Boxplot of original numerical variables for each cluster", fontsize=20)
for i, variable in enumerate(nume_cols):
plt.subplot(5, 3, i + 1)
sns.boxplot(data=data, x="HC_Clusters", y=variable)
plt.tight_layout(pad=2.0)
subset_scaled_df.groupby("HC_Clusters").mean().plot.bar(figsize=(20, 10))
<Axes: xlabel='HC_Clusters'>
data.groupby("HC_Clusters").mean().plot.bar(figsize=(20, 10))
<Axes: xlabel='HC_Clusters'>
Número de empresas en cada agrupación o cluster:
Cluster 0: 29 Cluster 1: 27 Cluster 2: 9 Cluster 3: 275
Cluster 0:
Valores máximos:
Valores mínimos:
Las empresas del cluster 0 se caracterizan por tener una alta volatilidad, esto indica que sus precios son volátiles y pueden fluctuar mucho. También tienen un alto rendimiento sobre el capital (ROE), lo que indica que están generando mucho dinero con sus activos. Sin embargo, las empresas del cluster 0 también tienen un precio actual bajo, un ratio de efectivo moderado, un beneficio neto negativo y una rentabilidad por acción negativa. Esto indica que estas empresas pueden estar creciendo rápidamente, pero aún no están generando ganancias. En general, las empresas del cluster 0 pueden ser atractivas para inversores que busquen empresas con un alto potencial de crecimiento, pero que estén dispuestos a asumir un mayor riesgo.
Cluster 1:
Valores máximos:
Valores mínimos:
Las empresas del cluster 1 se caracterizan por tener un ratio de efectivo muy alto, esto indica que tienen una gran cantidad de dinero en efectivo disponible.También tienen un flujo de efectivo neto muy alto, lo que indica que están generando mucho dinero en efectivo.
Sin embargo, las empresas del cluster 1 también tienen una volatilidad moderada y un rendimiento sobre el capital moderado. Esto indica que estas empresas no están creciendo tan rápidamente como las del cluster 0, pero que son financieramente estables.
El cluster 1 tiene los valores máximos de Current Price y Price Change. Esto indica que estas empresas tienen un precio actual alto y que sus precios están aumentando.Estas observaciones pueden ser relevantes para inversores que busquen empresas con un potencial de crecimiento a corto plazo. Sin embargo, es importante tener en cuenta que el cluster 1 también tiene valores moderados de Volatility y un bajo ROE. Esto indica que estas empresas no están creciendo tan rápidamente como las del cluster 0, pero que son financieramente estables. En general, las empresas del cluster 1 pueden ser atractivas para inversores que busquen empresas con un crecimiento a corto plazo, pero que no quieran asumir un riesgo demasiado alto.
Cluster 2:
Valores máximos:
Valores mínimos:
Valores mínimos:
Precio actual: Esto indica que las empresas de este sector se están negociando a precios relativamente bajos.
Volatilidad: Esto sugiere que los precios de las acciones de estas empresas están experimentando fluctuaciones relativamente bajas.
Flujo de efectivo neto: El flujo de efectivo neto negativo indica que estas empresas están utilizando más efectivo del que están generando.
Ratio P/E: Los ratios P/E bajos sugieren que estas empresas están infravaloradas en comparación con sus ganancias.
Ratio P/B: Los ratios P/B negativos indican que estas empresas tienen un valor contable negativo, lo que significa que sus pasivos superan a sus activos.
Valores máximos:
Ingreso neto: Esto indica que las empresas de este sector están generando ganancias positivas. Acciones en circulación estimadas: Un número elevado de acciones en circulación estimadas sugiere que estas empresas tienen un gran número de acciones en circulación, lo que puede hacerlas más líquidas pero también más volátiles. La combinación de valores mínimos y máximos en el sector 2 sugiere una mezcla de rasgos positivos y negativos. Por el lado positivo, estas empresas tienen un ingreso neto positivo y se están negociando a precios relativamente bajos, lo que indica un potencial de crecimiento. Sin embargo, su flujo de efectivo neto negativo, los ratios P/E bajos y los ratios P/B negativos plantean preocupaciones sobre su estabilidad financiera y su valoración.Los inversores del sector 2 deben sopesar cuidadosamente el potencial de crecimiento frente a los riesgos asociados.
Cluster 3:
Las empresas del sector 3 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con una mayor rentabilidad por acción y un número de acciones en circulación estimado alto. Estas empresas tienen precios de acciones moderados, cambios de precios positivos, volatilidad moderada, un ROE moderado, un ratio de efectivo moderado, flujos de efectivo netos positivos, beneficio neto moderado, rentabilidad por acción moderada y un número de acciones en circulación estimado promedio. Sus ratios P/E y P/B también son moderados.
Estas características sugieren que estas empresas no están creciendo tan rápidamente como las empresas del sector 0, pero pueden ofrecer más estabilidad y menos riesgo que las empresas del sector 2.
data.describe(include='all').T
| count | unique | top | freq | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Ticker Symbol | 340 | 340 | AAL | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| Security | 340 | 340 | American Airlines Group | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| GICS Sector | 340 | 11 | Industrials | 53 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| GICS Sub Industry | 340 | 104 | Oil & Gas Exploration & Production | 16 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| Current Price | 340.000 | NaN | NaN | NaN | 80.862 | 98.055 | 4.500 | 38.555 | 59.705 | 92.880 | 1274.950 |
| Price Change | 340.000 | NaN | NaN | NaN | 4.078 | 12.006 | -47.130 | -0.939 | 4.820 | 10.695 | 55.052 |
| Volatility | 340.000 | NaN | NaN | NaN | 1.526 | 0.592 | 0.733 | 1.135 | 1.386 | 1.696 | 4.580 |
| ROE | 340.000 | NaN | NaN | NaN | 39.597 | 96.548 | 1.000 | 9.750 | 15.000 | 27.000 | 917.000 |
| Cash Ratio | 340.000 | NaN | NaN | NaN | 70.024 | 90.421 | 0.000 | 18.000 | 47.000 | 99.000 | 958.000 |
| Net Cash Flow | 340.000 | NaN | NaN | NaN | 55537620.588 | 1946365312.176 | -11208000000.000 | -193906500.000 | 2098000.000 | 169810750.000 | 20764000000.000 |
| Net Income | 340.000 | NaN | NaN | NaN | 1494384602.941 | 3940150279.328 | -23528000000.000 | 352301250.000 | 707336000.000 | 1899000000.000 | 24442000000.000 |
| Earnings Per Share | 340.000 | NaN | NaN | NaN | 2.777 | 6.588 | -61.200 | 1.558 | 2.895 | 4.620 | 50.090 |
| Estimated Shares Outstanding | 340.000 | NaN | NaN | NaN | 577028337.754 | 845849595.418 | 27672156.860 | 158848216.100 | 309675137.800 | 573117457.325 | 6159292035.000 |
| P/E Ratio | 340.000 | NaN | NaN | NaN | 32.613 | 44.349 | 2.935 | 15.045 | 20.820 | 31.765 | 528.039 |
| P/B Ratio | 340.000 | NaN | NaN | NaN | -1.718 | 13.967 | -76.119 | -4.352 | -1.067 | 3.917 | 129.065 |
| HC_Clusters | 340.000 | NaN | NaN | NaN | 2.559 | 0.959 | 0.000 | 3.000 | 3.000 | 3.000 | 3.000 |
K means es más rápida de ejecutar, esto podría deberse a que la agrupación jerárquica debe calcular la distancia entre todos los pares de puntos de datos, mientras que K-means solo necesita calcular la distancia entre cada punto de datos y los centroides de los clústeres. No obstante, la interpretación de el número de clusters a usar, y el desbalanceo de la data, fueron los que ocasionaron mayor duración en cuanto al tiempo para resolver el ejercicio, dado el grado de interpretación y subjetividad asociado.
El número de agrupaciones que se obtienen con K-means depende del número de centroides que se especifique. En este ejercicio, se especificaron 3 centroides, por lo que K-means produjo 3 agrupaciones, pero también se sugirió 4.
La agrupación jerárquica produce un dendrograma, que es un gráfico que representa la relación entre los puntos de datos. El número de agrupaciones que se obtienen con la agrupación jerárquica depende del nivel en el que se corte el dendrograma.
En este ejercicio, se cortó el dendrograma en 4 niveles, por lo que la agrupación jerárquica produjo 4 agrupaciones.
En K means inicialmente se optó por usar de 8 a 11 clusters, y en agrupación jerarquica manejar al menos 6, pero dada la naturaleza de los datos, no se aportaba demasiado a la clasificación el aumentar estos valores. Ambos casos se vieron perjudicados por los valores extremos, el desbalanceo de los datos que implicaba un conjunto altamente predominante. Por lo que se considera que tienen resultados similares, y se consideró usar entre 3 a 4 clusters ( disminuir el número de clusters).
También puede mencionar cualquier diferencia o similitud que haya obtenido en los perfiles de clúster de ambas técnicas de agrupación.
Respecto a los datos, y su evidente desbalanceo, se pueden buscar alternativas para mejorar las distribuciones, y obtener valores de silueta y coeficientes cofenericos superiores.
Los valores extremos son puntos de datos que se encuentran muy alejados del resto de los puntos de datos en un conjunto de datos. Estos puntos de datos pueden afectar los resultados del agrupamiento, ya que pueden sesgar la distancia entre los puntos de datos.
En el caso del conjunto de datos utilizado, existen algunos valores extremos. Probablemente de haberse realizado el ejercicio de tratarlos, es posible haber encontrado mayor homogeneidad entre clusters,
La distancia euclidiana es sensible a los valores extremos, La distancia euclidiana es una medida de distancia que se basa en la raíz cuadrada de la suma de las diferencias entre los puntos de datos. Esta distancia es sensible a los valores extremos, ya que los valores extremos pueden aumentar significativamente la distancia entre los puntos de datos.
En el caso del conjunto de datos de empresas utilizado en este ejercicio, la distancia euclidiana entre el punto de datos con el precio actual más alto y el resto de los puntos de datos es muy alta. Esto se debe a que la distancia euclidiana tiene en cuenta la diferencia absoluta entre los precios actuales de los puntos de datos.
La distancia de Manhattan es menos sensible a los valores extremos,la distancia de Manhattan es una medida de distancia que se basa en la suma de las diferencias absolutas entre los puntos de datos. Esta distancia es menos sensible a los valores extremos que la distancia euclidiana, ya que no tiene en cuenta la raíz cuadrada de las diferencias, por lo que aplicar este parámetro es posible que trajera alguna ventaja en los resultados de agrupación.
Opciones como PCA, ingenieria de caracteristicas , submuestreo ó sobremuestreo podrían aplicarse para manejar el desbalanceo.
Recomendaciones comerciales
Conclusiones para agrupaciones K-means
En general, los clústeres 0 y 1 representan a empresas con un potencial de crecimiento positivo.
El clúster 0 se caracteriza por un crecimiento más rápido y un potencial de crecimiento más alto, mientras que el clúster 1 se caracteriza por una posición financiera más sólida y un menor potencial de crecimiento.
El clúster 2 representa a empresas con un potencial de crecimiento negativo.
Conclusiones para agrupaciones Agrupación jerarquica
Las empresas del cluster 0 se caracterizan por tener una alta valoración, un buen desempeño financiero y un alto potencial de crecimiento. Las empresas del cluster 0 pueden ser atractivas para inversores que buscan un crecimiento a largo plazo.
Las empresas del cluster 1 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con un ratio de efectivo y flujo de efectivo neto muy alto. Las empresas del cluster 1 pueden ser atractivas para inversores que buscan empresas con un buen flujo de efectivo.
Las empresas del cluster 2 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con un ratio de efectivo más bajo y flujo de efectivo neto negativo.
Las empresas del cluster 2 pueden ser atractivas para inversores que buscan empresas con costos de acciones bajos y pueden manejar el riesgo.
Las empresas del cluster 3 se caracterizan por tener una valoración y un desempeño financiero promedio, pero con una mayor rentabilidad por acción y acciones en circulación estimadas más altas.